// Copyright (c) 2017, 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/spec/generate_files". import 'dart:convert' hide JsonDecoder; import 'package:analysis_server/protocol/protocol.dart'; import 'package:analysis_server/src/protocol/protocol_internal.dart'; import 'package:analyzer_plugin/src/utilities/client_uri_converter.dart'; import 'package:analyzer_plugin/protocol/protocol_common.dart'; /// analysis.analyzedFiles params /// /// { /// "directories": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisAnalyzedFilesParams implements HasToJson { /// A list of the paths of the files that are being analyzed. List directories; AnalysisAnalyzedFilesParams(this.directories); factory AnalysisAnalyzedFilesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List directories; if (json.containsKey('directories')) { directories = jsonDecoder.decodeList( '$jsonPath.directories', json['directories'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'directories'); } return AnalysisAnalyzedFilesParams(directories); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.analyzedFiles params', json); } } factory AnalysisAnalyzedFilesParams.fromNotification( Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisAnalyzedFilesParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['directories'] = directories .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification('analysis.analyzedFiles', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisAnalyzedFilesParams) { return listEqual( directories, other.directories, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hashAll(directories); } /// analysis.closingLabels params /// /// { /// "file": FilePath /// "labels": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisClosingLabelsParams implements HasToJson { /// The file the closing labels relate to. String file; /// Closing labels relevant to the file. Each item represents a useful label /// associated with some range with may be useful to display to the user /// within the editor at the end of the range to indicate what construct is /// closed at that location. Closing labels include constructor/method calls /// and List arguments that span multiple lines. Note that the ranges that /// are returned can overlap each other because they may be associated with /// constructs that can be nested. List labels; AnalysisClosingLabelsParams(this.file, this.labels); factory AnalysisClosingLabelsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List labels; if (json.containsKey('labels')) { labels = jsonDecoder.decodeList( '$jsonPath.labels', json['labels'], (String jsonPath, Object? json) => ClosingLabel.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'labels'); } return AnalysisClosingLabelsParams(file, labels); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.closingLabels params', json); } } factory AnalysisClosingLabelsParams.fromNotification( Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisClosingLabelsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['labels'] = labels .map((ClosingLabel value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification('analysis.closingLabels', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisClosingLabelsParams) { return file == other.file && listEqual( labels, other.labels, (ClosingLabel a, ClosingLabel b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(labels), ); } /// AnalysisErrorFixes /// /// { /// "error": AnalysisError /// "fixes": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisErrorFixes implements HasToJson { /// The error with which the fixes are associated. AnalysisError error; /// The fixes associated with the error. List fixes; AnalysisErrorFixes(this.error, {List? fixes}) : fixes = fixes ?? []; factory AnalysisErrorFixes.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { AnalysisError error; if (json.containsKey('error')) { error = AnalysisError.fromJson( jsonDecoder, '$jsonPath.error', json['error'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'error'); } List fixes; if (json.containsKey('fixes')) { fixes = jsonDecoder.decodeList( '$jsonPath.fixes', json['fixes'], (String jsonPath, Object? json) => SourceChange.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'fixes'); } return AnalysisErrorFixes(error, fixes: fixes); } else { throw jsonDecoder.mismatch(jsonPath, 'AnalysisErrorFixes', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['error'] = error.toJson(clientUriConverter: clientUriConverter); result['fixes'] = fixes .map((SourceChange value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisErrorFixes) { return error == other.error && listEqual( fixes, other.fixes, (SourceChange a, SourceChange b) => a == b); } return false; } @override int get hashCode => Object.hash( error, Object.hashAll(fixes), ); } /// analysis.errors params /// /// { /// "file": FilePath /// "errors": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisErrorsParams implements HasToJson { /// The file containing the errors. String file; /// The errors contained in the file. List errors; AnalysisErrorsParams(this.file, this.errors); factory AnalysisErrorsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List errors; if (json.containsKey('errors')) { errors = jsonDecoder.decodeList( '$jsonPath.errors', json['errors'], (String jsonPath, Object? json) => AnalysisError.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'errors'); } return AnalysisErrorsParams(file, errors); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.errors params', json); } } factory AnalysisErrorsParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisErrorsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['errors'] = errors .map((AnalysisError value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.errors', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisErrorsParams) { return file == other.file && listEqual(errors, other.errors, (AnalysisError a, AnalysisError b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(errors), ); } /// analysis.flushResults params /// /// { /// "files": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisFlushResultsParams implements HasToJson { /// The files that are no longer being analyzed. List files; AnalysisFlushResultsParams(this.files); factory AnalysisFlushResultsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List files; if (json.containsKey('files')) { files = jsonDecoder.decodeList( '$jsonPath.files', json['files'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } return AnalysisFlushResultsParams(files); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.flushResults params', json); } } factory AnalysisFlushResultsParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisFlushResultsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['files'] = files .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification('analysis.flushResults', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisFlushResultsParams) { return listEqual(files, other.files, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hashAll(files); } /// analysis.folding params /// /// { /// "file": FilePath /// "regions": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisFoldingParams implements HasToJson { /// The file containing the folding regions. String file; /// The folding regions contained in the file. List regions; AnalysisFoldingParams(this.file, this.regions); factory AnalysisFoldingParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List regions; if (json.containsKey('regions')) { regions = jsonDecoder.decodeList( '$jsonPath.regions', json['regions'], (String jsonPath, Object? json) => FoldingRegion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'regions'); } return AnalysisFoldingParams(file, regions); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.folding params', json); } } factory AnalysisFoldingParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisFoldingParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['regions'] = regions .map((FoldingRegion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.folding', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisFoldingParams) { return file == other.file && listEqual(regions, other.regions, (FoldingRegion a, FoldingRegion b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(regions), ); } /// analysis.getErrors params /// /// { /// "file": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetErrorsParams implements RequestParams { /// The file for which errors are being requested. String file; AnalysisGetErrorsParams(this.file); factory AnalysisGetErrorsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } return AnalysisGetErrorsParams(file); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.getErrors params', json); } } factory AnalysisGetErrorsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetErrorsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getErrors', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetErrorsParams) { return file == other.file; } return false; } @override int get hashCode => file.hashCode; } /// analysis.getErrors result /// /// { /// "errors": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetErrorsResult implements ResponseResult { /// The errors associated with the file. List errors; AnalysisGetErrorsResult(this.errors); factory AnalysisGetErrorsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List errors; if (json.containsKey('errors')) { errors = jsonDecoder.decodeList( '$jsonPath.errors', json['errors'], (String jsonPath, Object? json) => AnalysisError.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'errors'); } return AnalysisGetErrorsResult(errors); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.getErrors result', json); } } factory AnalysisGetErrorsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetErrorsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['errors'] = errors .map((AnalysisError value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetErrorsResult) { return listEqual( errors, other.errors, (AnalysisError a, AnalysisError b) => a == b); } return false; } @override int get hashCode => Object.hashAll(errors); } /// analysis.getHover params /// /// { /// "file": FilePath /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetHoverParams implements RequestParams { /// The file in which hover information is being requested. String file; /// The offset for which hover information is being requested. int offset; AnalysisGetHoverParams(this.file, this.offset); factory AnalysisGetHoverParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return AnalysisGetHoverParams(file, offset); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.getHover params', json); } } factory AnalysisGetHoverParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetHoverParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getHover', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetHoverParams) { return file == other.file && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, offset, ); } /// analysis.getHover result /// /// { /// "hovers": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetHoverResult implements ResponseResult { /// The hover information associated with the location. The list will be /// empty if no information could be determined for the location. The list /// can contain multiple items if the file is being analyzed in multiple /// contexts in conflicting ways (such as a part that is included in multiple /// libraries). List hovers; AnalysisGetHoverResult(this.hovers); factory AnalysisGetHoverResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List hovers; if (json.containsKey('hovers')) { hovers = jsonDecoder.decodeList( '$jsonPath.hovers', json['hovers'], (String jsonPath, Object? json) => HoverInformation.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'hovers'); } return AnalysisGetHoverResult(hovers); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.getHover result', json); } } factory AnalysisGetHoverResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetHoverResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['hovers'] = hovers .map((HoverInformation value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetHoverResult) { return listEqual(hovers, other.hovers, (HoverInformation a, HoverInformation b) => a == b); } return false; } @override int get hashCode => Object.hashAll(hovers); } /// analysis.getImportedElements params /// /// { /// "file": FilePath /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetImportedElementsParams implements RequestParams { /// The file in which import information is being requested. String file; /// The offset of the region for which import information is being requested. int offset; /// The length of the region for which import information is being requested. int length; AnalysisGetImportedElementsParams(this.file, this.offset, this.length); factory AnalysisGetImportedElementsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return AnalysisGetImportedElementsParams(file, offset, length); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getImportedElements params', json); } } factory AnalysisGetImportedElementsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetImportedElementsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getImportedElements', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetImportedElementsParams) { return file == other.file && offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( file, offset, length, ); } /// analysis.getImportedElements result /// /// { /// "elements": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetImportedElementsResult implements ResponseResult { /// The information about the elements that are referenced in the specified /// region of the specified file that come from imported libraries. List elements; AnalysisGetImportedElementsResult(this.elements); factory AnalysisGetImportedElementsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List elements; if (json.containsKey('elements')) { elements = jsonDecoder.decodeList( '$jsonPath.elements', json['elements'], (String jsonPath, Object? json) => ImportedElements.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'elements'); } return AnalysisGetImportedElementsResult(elements); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getImportedElements result', json); } } factory AnalysisGetImportedElementsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetImportedElementsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['elements'] = elements .map((ImportedElements value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetImportedElementsResult) { return listEqual(elements, other.elements, (ImportedElements a, ImportedElements b) => a == b); } return false; } @override int get hashCode => Object.hashAll(elements); } /// analysis.getLibraryDependencies params /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetLibraryDependenciesParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getLibraryDependencies'); } @override bool operator ==(other) => other is AnalysisGetLibraryDependenciesParams; @override int get hashCode => 246577680; } /// analysis.getLibraryDependencies result /// /// { /// "libraries": List /// "packageMap": Map>> /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetLibraryDependenciesResult implements ResponseResult { /// A list of the paths of library elements referenced by files in existing /// analysis roots. List libraries; /// A mapping from context source roots to package maps which map package /// names to source directories for use in client-side package URI /// resolution. Map>> packageMap; AnalysisGetLibraryDependenciesResult(this.libraries, this.packageMap); factory AnalysisGetLibraryDependenciesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List libraries; if (json.containsKey('libraries')) { libraries = jsonDecoder.decodeList( '$jsonPath.libraries', json['libraries'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'libraries'); } Map>> packageMap; if (json.containsKey('packageMap')) { packageMap = jsonDecoder.decodeMap( '$jsonPath.packageMap', json['packageMap'], valueDecoder: (String jsonPath, Object? json) => jsonDecoder.decodeMap(jsonPath, json, valueDecoder: (String jsonPath, Object? json) => jsonDecoder.decodeList( jsonPath, json, (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)))); } else { throw jsonDecoder.mismatch(jsonPath, 'packageMap'); } return AnalysisGetLibraryDependenciesResult(libraries, packageMap); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getLibraryDependencies result', json); } } factory AnalysisGetLibraryDependenciesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetLibraryDependenciesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['libraries'] = libraries .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); result['packageMap'] = mapMap(packageMap, valueCallback: (Map> value) => mapMap(value, valueCallback: (List value) => value .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList())); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetLibraryDependenciesResult) { return listEqual( libraries, other.libraries, (String a, String b) => a == b) && mapEqual( packageMap, other.packageMap, (Map> a, Map> b) => mapEqual( a, b, (List a, List b) => listEqual(a, b, (String a, String b) => a == b))); } return false; } @override int get hashCode => Object.hash( Object.hashAll(libraries), Object.hashAll([...packageMap.keys, ...packageMap.values]), ); } /// analysis.getNavigation params /// /// { /// "file": FilePath /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetNavigationParams implements RequestParams { /// The file in which navigation information is being requested. String file; /// The offset of the region for which navigation information is being /// requested. int offset; /// The length of the region for which navigation information is being /// requested. int length; AnalysisGetNavigationParams(this.file, this.offset, this.length); factory AnalysisGetNavigationParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return AnalysisGetNavigationParams(file, offset, length); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getNavigation params', json); } } factory AnalysisGetNavigationParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetNavigationParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getNavigation', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetNavigationParams) { return file == other.file && offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( file, offset, length, ); } /// analysis.getNavigation result /// /// { /// "files": List /// "targets": List /// "regions": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetNavigationResult implements ResponseResult { /// A list of the paths of files that are referenced by the navigation /// targets. List files; /// A list of the navigation targets that are referenced by the navigation /// regions. List targets; /// A list of the navigation regions within the requested region of the file. List regions; AnalysisGetNavigationResult(this.files, this.targets, this.regions); factory AnalysisGetNavigationResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List files; if (json.containsKey('files')) { files = jsonDecoder.decodeList( '$jsonPath.files', json['files'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } List targets; if (json.containsKey('targets')) { targets = jsonDecoder.decodeList( '$jsonPath.targets', json['targets'], (String jsonPath, Object? json) => NavigationTarget.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'targets'); } List regions; if (json.containsKey('regions')) { regions = jsonDecoder.decodeList( '$jsonPath.regions', json['regions'], (String jsonPath, Object? json) => NavigationRegion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'regions'); } return AnalysisGetNavigationResult(files, targets, regions); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getNavigation result', json); } } factory AnalysisGetNavigationResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetNavigationResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['files'] = files .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); result['targets'] = targets .map((NavigationTarget value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['regions'] = regions .map((NavigationRegion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetNavigationResult) { return listEqual(files, other.files, (String a, String b) => a == b) && listEqual(targets, other.targets, (NavigationTarget a, NavigationTarget b) => a == b) && listEqual(regions, other.regions, (NavigationRegion a, NavigationRegion b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(files), Object.hashAll(targets), Object.hashAll(regions), ); } /// analysis.getReachableSources params /// /// { /// "file": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetReachableSourcesParams implements RequestParams { /// The file for which reachable source information is being requested. String file; AnalysisGetReachableSourcesParams(this.file); factory AnalysisGetReachableSourcesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } return AnalysisGetReachableSourcesParams(file); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getReachableSources params', json); } } factory AnalysisGetReachableSourcesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetReachableSourcesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getReachableSources', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetReachableSourcesParams) { return file == other.file; } return false; } @override int get hashCode => file.hashCode; } /// analysis.getReachableSources result /// /// { /// "sources": Map> /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetReachableSourcesResult implements ResponseResult { /// A mapping from source URIs to directly reachable source URIs. For /// example, a file "foo.dart" that imports "bar.dart" would have the /// corresponding mapping { "file:///foo.dart" : ["file:///bar.dart"] }. If /// "bar.dart" has further imports (or exports) there will be a mapping from /// the URI "file:///bar.dart" to them. To check if a specific URI is /// reachable from a given file, clients can check for its presence in the /// resulting key set. Map> sources; AnalysisGetReachableSourcesResult(this.sources); factory AnalysisGetReachableSourcesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Map> sources; if (json.containsKey('sources')) { sources = jsonDecoder.decodeMap('$jsonPath.sources', json['sources'], valueDecoder: (String jsonPath, Object? json) => jsonDecoder .decodeList(jsonPath, json, jsonDecoder.decodeString)); } else { throw jsonDecoder.mismatch(jsonPath, 'sources'); } return AnalysisGetReachableSourcesResult(sources); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getReachableSources result', json); } } factory AnalysisGetReachableSourcesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetReachableSourcesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['sources'] = sources; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetReachableSourcesResult) { return mapEqual( sources, other.sources, (List a, List b) => listEqual(a, b, (String a, String b) => a == b)); } return false; } @override int get hashCode => Object.hashAll([...sources.keys, ...sources.values]); } /// analysis.getSignature params /// /// { /// "file": FilePath /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetSignatureParams implements RequestParams { /// The file in which signature information is being requested. String file; /// The location for which signature information is being requested. int offset; AnalysisGetSignatureParams(this.file, this.offset); factory AnalysisGetSignatureParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return AnalysisGetSignatureParams(file, offset); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getSignature params', json); } } factory AnalysisGetSignatureParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetSignatureParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.getSignature', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetSignatureParams) { return file == other.file && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, offset, ); } /// analysis.getSignature result /// /// { /// "name": String /// "parameters": List /// "dartdoc": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisGetSignatureResult implements ResponseResult { /// The name of the function being invoked at the given offset. String name; /// A list of information about each of the parameters of the function being /// invoked. List parameters; /// The dartdoc associated with the function being invoked. Other than the /// removal of the comment delimiters, including leading asterisks in the /// case of a block comment, the dartdoc is unprocessed markdown. This data /// is omitted if there is no referenced element, or if the element has no /// dartdoc. String? dartdoc; AnalysisGetSignatureResult(this.name, this.parameters, {this.dartdoc}); factory AnalysisGetSignatureResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } List parameters; if (json.containsKey('parameters')) { parameters = jsonDecoder.decodeList( '$jsonPath.parameters', json['parameters'], (String jsonPath, Object? json) => ParameterInfo.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'parameters'); } String? dartdoc; if (json.containsKey('dartdoc')) { dartdoc = jsonDecoder.decodeString('$jsonPath.dartdoc', json['dartdoc']); } return AnalysisGetSignatureResult(name, parameters, dartdoc: dartdoc); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.getSignature result', json); } } factory AnalysisGetSignatureResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisGetSignatureResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['parameters'] = parameters .map((ParameterInfo value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); var dartdoc = this.dartdoc; if (dartdoc != null) { result['dartdoc'] = dartdoc; } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisGetSignatureResult) { return name == other.name && listEqual(parameters, other.parameters, (ParameterInfo a, ParameterInfo b) => a == b) && dartdoc == other.dartdoc; } return false; } @override int get hashCode => Object.hash( name, Object.hashAll(parameters), dartdoc, ); } /// analysis.highlights params /// /// { /// "file": FilePath /// "regions": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisHighlightsParams implements HasToJson { /// The file containing the highlight regions. String file; /// The highlight regions contained in the file. Each highlight region /// represents a particular syntactic or semantic meaning associated with /// some range. Note that the highlight regions that are returned can overlap /// other highlight regions if there is more than one meaning associated with /// a particular region. List regions; AnalysisHighlightsParams(this.file, this.regions); factory AnalysisHighlightsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List regions; if (json.containsKey('regions')) { regions = jsonDecoder.decodeList( '$jsonPath.regions', json['regions'], (String jsonPath, Object? json) => HighlightRegion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'regions'); } return AnalysisHighlightsParams(file, regions); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.highlights params', json); } } factory AnalysisHighlightsParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisHighlightsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['regions'] = regions .map((HighlightRegion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.highlights', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisHighlightsParams) { return file == other.file && listEqual(regions, other.regions, (HighlightRegion a, HighlightRegion b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(regions), ); } /// analysis.implemented params /// /// { /// "file": FilePath /// "classes": List /// "members": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisImplementedParams implements HasToJson { /// The file with which the implementations are associated. String file; /// The classes defined in the file that are implemented or extended. List classes; /// The member defined in the file that are implemented or overridden. List members; AnalysisImplementedParams(this.file, this.classes, this.members); factory AnalysisImplementedParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List classes; if (json.containsKey('classes')) { classes = jsonDecoder.decodeList( '$jsonPath.classes', json['classes'], (String jsonPath, Object? json) => ImplementedClass.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'classes'); } List members; if (json.containsKey('members')) { members = jsonDecoder.decodeList( '$jsonPath.members', json['members'], (String jsonPath, Object? json) => ImplementedMember.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'members'); } return AnalysisImplementedParams(file, classes, members); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.implemented params', json); } } factory AnalysisImplementedParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisImplementedParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['classes'] = classes .map((ImplementedClass value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['members'] = members .map((ImplementedMember value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.implemented', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisImplementedParams) { return file == other.file && listEqual(classes, other.classes, (ImplementedClass a, ImplementedClass b) => a == b) && listEqual(members, other.members, (ImplementedMember a, ImplementedMember b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(classes), Object.hashAll(members), ); } /// analysis.invalidate params /// /// { /// "file": FilePath /// "offset": int /// "length": int /// "delta": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisInvalidateParams implements HasToJson { /// The file whose information has been invalidated. String file; /// The offset of the invalidated region. int offset; /// The length of the invalidated region. int length; /// The delta to be applied to the offsets in information that follows the /// invalidated region in order to update it so that it doesn't need to be /// re-requested. int delta; AnalysisInvalidateParams(this.file, this.offset, this.length, this.delta); factory AnalysisInvalidateParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } int delta; if (json.containsKey('delta')) { delta = jsonDecoder.decodeInt('$jsonPath.delta', json['delta']); } else { throw jsonDecoder.mismatch(jsonPath, 'delta'); } return AnalysisInvalidateParams(file, offset, length, delta); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.invalidate params', json); } } factory AnalysisInvalidateParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisInvalidateParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; result['delta'] = delta; return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.invalidate', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisInvalidateParams) { return file == other.file && offset == other.offset && length == other.length && delta == other.delta; } return false; } @override int get hashCode => Object.hash( file, offset, length, delta, ); } /// analysis.navigation params /// /// { /// "file": FilePath /// "regions": List /// "targets": List /// "files": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisNavigationParams implements HasToJson { /// The file containing the navigation regions. String file; /// The navigation regions contained in the file. The regions are sorted by /// their offsets. Each navigation region represents a list of targets /// associated with some range. The lists will usually contain a single /// target, but can contain more in the case of a part that is included in /// multiple libraries or in Dart code that is compiled against multiple /// versions of a package. Note that the navigation regions that are returned /// do not overlap other navigation regions. List regions; /// The navigation targets referenced in the file. They are referenced by /// NavigationRegions by their index in this array. List targets; /// The files containing navigation targets referenced in the file. They are /// referenced by NavigationTargets by their index in this array. List files; AnalysisNavigationParams(this.file, this.regions, this.targets, this.files); factory AnalysisNavigationParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List regions; if (json.containsKey('regions')) { regions = jsonDecoder.decodeList( '$jsonPath.regions', json['regions'], (String jsonPath, Object? json) => NavigationRegion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'regions'); } List targets; if (json.containsKey('targets')) { targets = jsonDecoder.decodeList( '$jsonPath.targets', json['targets'], (String jsonPath, Object? json) => NavigationTarget.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'targets'); } List files; if (json.containsKey('files')) { files = jsonDecoder.decodeList( '$jsonPath.files', json['files'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } return AnalysisNavigationParams(file, regions, targets, files); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.navigation params', json); } } factory AnalysisNavigationParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisNavigationParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['regions'] = regions .map((NavigationRegion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['targets'] = targets .map((NavigationTarget value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['files'] = files .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.navigation', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisNavigationParams) { return file == other.file && listEqual(regions, other.regions, (NavigationRegion a, NavigationRegion b) => a == b) && listEqual(targets, other.targets, (NavigationTarget a, NavigationTarget b) => a == b) && listEqual(files, other.files, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(regions), Object.hashAll(targets), Object.hashAll(files), ); } /// analysis.occurrences params /// /// { /// "file": FilePath /// "occurrences": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisOccurrencesParams implements HasToJson { /// The file in which the references occur. String file; /// The occurrences of references to elements within the file. List occurrences; AnalysisOccurrencesParams(this.file, this.occurrences); factory AnalysisOccurrencesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List occurrences; if (json.containsKey('occurrences')) { occurrences = jsonDecoder.decodeList( '$jsonPath.occurrences', json['occurrences'], (String jsonPath, Object? json) => Occurrences.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'occurrences'); } return AnalysisOccurrencesParams(file, occurrences); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.occurrences params', json); } } factory AnalysisOccurrencesParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisOccurrencesParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['occurrences'] = occurrences .map((Occurrences value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.occurrences', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisOccurrencesParams) { return file == other.file && listEqual(occurrences, other.occurrences, (Occurrences a, Occurrences b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(occurrences), ); } /// AnalysisOptions /// /// { /// "enableAsync": optional bool /// "enableDeferredLoading": optional bool /// "enableEnums": optional bool /// "enableNullAwareOperators": optional bool /// "generateDart2jsHints": optional bool /// "generateHints": optional bool /// "generateLints": optional bool /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisOptions implements HasToJson { /// Deprecated: this feature is always enabled. /// /// True if the client wants to enable support for the proposed async /// feature. bool? enableAsync; /// Deprecated: this feature is always enabled. /// /// True if the client wants to enable support for the proposed deferred /// loading feature. bool? enableDeferredLoading; /// Deprecated: this feature is always enabled. /// /// True if the client wants to enable support for the proposed enum feature. bool? enableEnums; /// Deprecated: this feature is always enabled. /// /// True if the client wants to enable support for the proposed "null aware /// operators" feature. bool? enableNullAwareOperators; /// True if hints that are specific to dart2js should be generated. This /// option is ignored if generateHints is false. bool? generateDart2jsHints; /// True if hints should be generated as part of generating errors and /// warnings. bool? generateHints; /// True if lints should be generated as part of generating errors and /// warnings. bool? generateLints; AnalysisOptions( {this.enableAsync, this.enableDeferredLoading, this.enableEnums, this.enableNullAwareOperators, this.generateDart2jsHints, this.generateHints, this.generateLints}); factory AnalysisOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool? enableAsync; if (json.containsKey('enableAsync')) { enableAsync = jsonDecoder.decodeBool( '$jsonPath.enableAsync', json['enableAsync']); } bool? enableDeferredLoading; if (json.containsKey('enableDeferredLoading')) { enableDeferredLoading = jsonDecoder.decodeBool( '$jsonPath.enableDeferredLoading', json['enableDeferredLoading']); } bool? enableEnums; if (json.containsKey('enableEnums')) { enableEnums = jsonDecoder.decodeBool( '$jsonPath.enableEnums', json['enableEnums']); } bool? enableNullAwareOperators; if (json.containsKey('enableNullAwareOperators')) { enableNullAwareOperators = jsonDecoder.decodeBool( '$jsonPath.enableNullAwareOperators', json['enableNullAwareOperators']); } bool? generateDart2jsHints; if (json.containsKey('generateDart2jsHints')) { generateDart2jsHints = jsonDecoder.decodeBool( '$jsonPath.generateDart2jsHints', json['generateDart2jsHints']); } bool? generateHints; if (json.containsKey('generateHints')) { generateHints = jsonDecoder.decodeBool( '$jsonPath.generateHints', json['generateHints']); } bool? generateLints; if (json.containsKey('generateLints')) { generateLints = jsonDecoder.decodeBool( '$jsonPath.generateLints', json['generateLints']); } return AnalysisOptions( enableAsync: enableAsync, enableDeferredLoading: enableDeferredLoading, enableEnums: enableEnums, enableNullAwareOperators: enableNullAwareOperators, generateDart2jsHints: generateDart2jsHints, generateHints: generateHints, generateLints: generateLints); } else { throw jsonDecoder.mismatch(jsonPath, 'AnalysisOptions', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var enableAsync = this.enableAsync; if (enableAsync != null) { result['enableAsync'] = enableAsync; } var enableDeferredLoading = this.enableDeferredLoading; if (enableDeferredLoading != null) { result['enableDeferredLoading'] = enableDeferredLoading; } var enableEnums = this.enableEnums; if (enableEnums != null) { result['enableEnums'] = enableEnums; } var enableNullAwareOperators = this.enableNullAwareOperators; if (enableNullAwareOperators != null) { result['enableNullAwareOperators'] = enableNullAwareOperators; } var generateDart2jsHints = this.generateDart2jsHints; if (generateDart2jsHints != null) { result['generateDart2jsHints'] = generateDart2jsHints; } var generateHints = this.generateHints; if (generateHints != null) { result['generateHints'] = generateHints; } var generateLints = this.generateLints; if (generateLints != null) { result['generateLints'] = generateLints; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisOptions) { return enableAsync == other.enableAsync && enableDeferredLoading == other.enableDeferredLoading && enableEnums == other.enableEnums && enableNullAwareOperators == other.enableNullAwareOperators && generateDart2jsHints == other.generateDart2jsHints && generateHints == other.generateHints && generateLints == other.generateLints; } return false; } @override int get hashCode => Object.hash( enableAsync, enableDeferredLoading, enableEnums, enableNullAwareOperators, generateDart2jsHints, generateHints, generateLints, ); } /// analysis.outline params /// /// { /// "file": FilePath /// "kind": FileKind /// "libraryName": optional String /// "outline": Outline /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisOutlineParams implements HasToJson { /// The file with which the outline is associated. String file; /// The kind of the file. FileKind kind; /// The name of the library defined by the file using a "library" directive, /// or referenced by a "part of" directive. If both "library" and "part of" /// directives are present, then the "library" directive takes precedence. /// This field will be omitted if the file has neither "library" nor "part /// of" directives. String? libraryName; /// The outline associated with the file. Outline outline; AnalysisOutlineParams(this.file, this.kind, this.outline, {this.libraryName}); factory AnalysisOutlineParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } FileKind kind; if (json.containsKey('kind')) { kind = FileKind.fromJson(jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } String? libraryName; if (json.containsKey('libraryName')) { libraryName = jsonDecoder.decodeString( '$jsonPath.libraryName', json['libraryName']); } Outline outline; if (json.containsKey('outline')) { outline = Outline.fromJson( jsonDecoder, '$jsonPath.outline', json['outline'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'outline'); } return AnalysisOutlineParams(file, kind, outline, libraryName: libraryName); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.outline params', json); } } factory AnalysisOutlineParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisOutlineParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); var libraryName = this.libraryName; if (libraryName != null) { result['libraryName'] = libraryName; } result['outline'] = outline.toJson(clientUriConverter: clientUriConverter); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.outline', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisOutlineParams) { return file == other.file && kind == other.kind && libraryName == other.libraryName && outline == other.outline; } return false; } @override int get hashCode => Object.hash( file, kind, libraryName, outline, ); } /// analysis.overrides params /// /// { /// "file": FilePath /// "overrides": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisOverridesParams implements HasToJson { /// The file with which the overrides are associated. String file; /// The overrides associated with the file. List overrides; AnalysisOverridesParams(this.file, this.overrides); factory AnalysisOverridesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List overrides; if (json.containsKey('overrides')) { overrides = jsonDecoder.decodeList( '$jsonPath.overrides', json['overrides'], (String jsonPath, Object? json) => Override.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'overrides'); } return AnalysisOverridesParams(file, overrides); } else { throw jsonDecoder.mismatch(jsonPath, 'analysis.overrides params', json); } } factory AnalysisOverridesParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return AnalysisOverridesParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['overrides'] = overrides .map((Override value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'analysis.overrides', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisOverridesParams) { return file == other.file && listEqual( overrides, other.overrides, (Override a, Override b) => a == b); } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(overrides), ); } /// analysis.reanalyze params /// /// Clients may not extend, implement or mix-in this class. class AnalysisReanalyzeParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.reanalyze'); } @override bool operator ==(other) => other is AnalysisReanalyzeParams; @override int get hashCode => 613039876; } /// analysis.reanalyze result /// /// Clients may not extend, implement or mix-in this class. class AnalysisReanalyzeResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisReanalyzeResult; @override int get hashCode => 846803925; } /// AnalysisService /// /// enum { /// CLOSING_LABELS /// FOLDING /// HIGHLIGHTS /// IMPLEMENTED /// INVALIDATE /// NAVIGATION /// OCCURRENCES /// OUTLINE /// OVERRIDES /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisService implements Enum { static const AnalysisService CLOSING_LABELS = AnalysisService._('CLOSING_LABELS'); static const AnalysisService FOLDING = AnalysisService._('FOLDING'); static const AnalysisService HIGHLIGHTS = AnalysisService._('HIGHLIGHTS'); static const AnalysisService IMPLEMENTED = AnalysisService._('IMPLEMENTED'); /// This service is not currently implemented and will become a /// GeneralAnalysisService in a future release. static const AnalysisService INVALIDATE = AnalysisService._('INVALIDATE'); static const AnalysisService NAVIGATION = AnalysisService._('NAVIGATION'); static const AnalysisService OCCURRENCES = AnalysisService._('OCCURRENCES'); static const AnalysisService OUTLINE = AnalysisService._('OUTLINE'); static const AnalysisService OVERRIDES = AnalysisService._('OVERRIDES'); /// A list containing all of the enum values that are defined. static const List VALUES = [ CLOSING_LABELS, FOLDING, HIGHLIGHTS, IMPLEMENTED, INVALIDATE, NAVIGATION, OCCURRENCES, OUTLINE, OVERRIDES ]; @override final String name; const AnalysisService._(this.name); factory AnalysisService(String name) { switch (name) { case 'CLOSING_LABELS': return CLOSING_LABELS; case 'FOLDING': return FOLDING; case 'HIGHLIGHTS': return HIGHLIGHTS; case 'IMPLEMENTED': return IMPLEMENTED; case 'INVALIDATE': return INVALIDATE; case 'NAVIGATION': return NAVIGATION; case 'OCCURRENCES': return OCCURRENCES; case 'OUTLINE': return OUTLINE; case 'OVERRIDES': return OVERRIDES; } throw Exception('Illegal enum value: $name'); } factory AnalysisService.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return AnalysisService(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'AnalysisService', json); } @override String toString() => 'AnalysisService.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// analysis.setAnalysisRoots params /// /// { /// "included": List /// "excluded": List /// "packageRoots": optional Map /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetAnalysisRootsParams implements RequestParams { /// A list of the files and directories that should be analyzed. List included; /// A list of the files and directories within the included directories that /// should not be analyzed. List excluded; /// A mapping from source directories to package roots that should override /// the normal package: URI resolution mechanism. /// /// If a package root is a file, then the analyzer will behave as though that /// file is a ".dart_tool/package_config.json" file in the source directory. /// The effect is the same as specifying the file as a "--packages" parameter /// to the Dart VM when executing any Dart file inside the source directory. /// /// Files in any directories that are not overridden by this mapping have /// their package: URI's resolved using the normal pubspec.yaml mechanism. If /// this field is absent, or the empty map is specified, that indicates that /// the normal pubspec.yaml mechanism should always be used. Map? packageRoots; AnalysisSetAnalysisRootsParams(this.included, this.excluded, {this.packageRoots}); factory AnalysisSetAnalysisRootsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List included; if (json.containsKey('included')) { included = jsonDecoder.decodeList( '$jsonPath.included', json['included'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'included'); } List excluded; if (json.containsKey('excluded')) { excluded = jsonDecoder.decodeList( '$jsonPath.excluded', json['excluded'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'excluded'); } Map? packageRoots; if (json.containsKey('packageRoots')) { packageRoots = jsonDecoder.decodeMap( '$jsonPath.packageRoots', json['packageRoots'], keyDecoder: (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json), valueDecoder: (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } return AnalysisSetAnalysisRootsParams(included, excluded, packageRoots: packageRoots); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.setAnalysisRoots params', json); } } factory AnalysisSetAnalysisRootsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisSetAnalysisRootsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['included'] = included .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); result['excluded'] = excluded .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); var packageRoots = this.packageRoots; if (packageRoots != null) { result['packageRoots'] = mapMap(packageRoots, keyCallback: (String value) => clientUriConverter?.toClientFilePath(value) ?? value, valueCallback: (String value) => clientUriConverter?.toClientFilePath(value) ?? value); } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.setAnalysisRoots', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisSetAnalysisRootsParams) { return listEqual( included, other.included, (String a, String b) => a == b) && listEqual(excluded, other.excluded, (String a, String b) => a == b) && mapEqual( packageRoots, other.packageRoots, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(included), Object.hashAll(excluded), Object.hashAll([...?packageRoots?.keys, ...?packageRoots?.values]), ); } /// analysis.setAnalysisRoots result /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetAnalysisRootsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisSetAnalysisRootsResult; @override int get hashCode => 866004753; } /// analysis.setGeneralSubscriptions params /// /// { /// "subscriptions": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetGeneralSubscriptionsParams implements RequestParams { /// A list of the services being subscribed to. List subscriptions; AnalysisSetGeneralSubscriptionsParams(this.subscriptions); factory AnalysisSetGeneralSubscriptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List subscriptions; if (json.containsKey('subscriptions')) { subscriptions = jsonDecoder.decodeList( '$jsonPath.subscriptions', json['subscriptions'], (String jsonPath, Object? json) => GeneralAnalysisService.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'subscriptions'); } return AnalysisSetGeneralSubscriptionsParams(subscriptions); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.setGeneralSubscriptions params', json); } } factory AnalysisSetGeneralSubscriptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisSetGeneralSubscriptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['subscriptions'] = subscriptions .map((GeneralAnalysisService value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.setGeneralSubscriptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisSetGeneralSubscriptionsParams) { return listEqual(subscriptions, other.subscriptions, (GeneralAnalysisService a, GeneralAnalysisService b) => a == b); } return false; } @override int get hashCode => Object.hashAll(subscriptions); } /// analysis.setGeneralSubscriptions result /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetGeneralSubscriptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisSetGeneralSubscriptionsResult; @override int get hashCode => 386759562; } /// analysis.setPriorityFiles params /// /// { /// "files": List /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetPriorityFilesParams implements RequestParams { /// The files that are to be a priority for analysis. List files; AnalysisSetPriorityFilesParams(this.files); factory AnalysisSetPriorityFilesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List files; if (json.containsKey('files')) { files = jsonDecoder.decodeList( '$jsonPath.files', json['files'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } return AnalysisSetPriorityFilesParams(files); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.setPriorityFiles params', json); } } factory AnalysisSetPriorityFilesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisSetPriorityFilesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['files'] = files .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.setPriorityFiles', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisSetPriorityFilesParams) { return listEqual(files, other.files, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hashAll(files); } /// analysis.setPriorityFiles result /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetPriorityFilesResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisSetPriorityFilesResult; @override int get hashCode => 330050055; } /// analysis.setSubscriptions params /// /// { /// "subscriptions": Map> /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetSubscriptionsParams implements RequestParams { /// A table mapping services to a list of the files being subscribed to the /// service. Map> subscriptions; AnalysisSetSubscriptionsParams(this.subscriptions); factory AnalysisSetSubscriptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Map> subscriptions; if (json.containsKey('subscriptions')) { subscriptions = jsonDecoder.decodeMap( '$jsonPath.subscriptions', json['subscriptions'], keyDecoder: (String jsonPath, Object? json) => AnalysisService.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter), valueDecoder: (String jsonPath, Object? json) => jsonDecoder.decodeList( jsonPath, json, (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json))); } else { throw jsonDecoder.mismatch(jsonPath, 'subscriptions'); } return AnalysisSetSubscriptionsParams(subscriptions); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.setSubscriptions params', json); } } factory AnalysisSetSubscriptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisSetSubscriptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['subscriptions'] = mapMap(subscriptions, keyCallback: (AnalysisService value) => value.toJson(clientUriConverter: clientUriConverter), valueCallback: (List value) => value .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList()); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.setSubscriptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisSetSubscriptionsParams) { return mapEqual( subscriptions, other.subscriptions, (List a, List b) => listEqual(a, b, (String a, String b) => a == b)); } return false; } @override int get hashCode => Object.hashAll([...subscriptions.keys, ...subscriptions.values]); } /// analysis.setSubscriptions result /// /// Clients may not extend, implement or mix-in this class. class AnalysisSetSubscriptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisSetSubscriptionsResult; @override int get hashCode => 218088493; } /// AnalysisStatus /// /// { /// "isAnalyzing": bool /// "analysisTarget": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisStatus implements HasToJson { /// True if analysis is currently being performed. bool isAnalyzing; /// The name of the current target of analysis. This field is omitted if /// analyzing is false. String? analysisTarget; AnalysisStatus(this.isAnalyzing, {this.analysisTarget}); factory AnalysisStatus.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool isAnalyzing; if (json.containsKey('isAnalyzing')) { isAnalyzing = jsonDecoder.decodeBool( '$jsonPath.isAnalyzing', json['isAnalyzing']); } else { throw jsonDecoder.mismatch(jsonPath, 'isAnalyzing'); } String? analysisTarget; if (json.containsKey('analysisTarget')) { analysisTarget = jsonDecoder.decodeString( '$jsonPath.analysisTarget', json['analysisTarget']); } return AnalysisStatus(isAnalyzing, analysisTarget: analysisTarget); } else { throw jsonDecoder.mismatch(jsonPath, 'AnalysisStatus', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['isAnalyzing'] = isAnalyzing; var analysisTarget = this.analysisTarget; if (analysisTarget != null) { result['analysisTarget'] = analysisTarget; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisStatus) { return isAnalyzing == other.isAnalyzing && analysisTarget == other.analysisTarget; } return false; } @override int get hashCode => Object.hash( isAnalyzing, analysisTarget, ); } /// analysis.updateContent params /// /// { /// "files": Map /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisUpdateContentParams implements RequestParams { /// A table mapping the files whose content has changed to a description of /// the content change. Map files; AnalysisUpdateContentParams(this.files); factory AnalysisUpdateContentParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Map files; if (json.containsKey('files')) { files = jsonDecoder.decodeMap('$jsonPath.files', json['files'], keyDecoder: (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json), valueDecoder: (String jsonPath, Object? json) => jsonDecoder.decodeUnion(jsonPath, json, 'type', { 'add': (String jsonPath, Object? json) => AddContentOverlay.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter), 'change': (String jsonPath, Object? json) => ChangeContentOverlay.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter), 'remove': (String jsonPath, Object? json) => RemoveContentOverlay.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter) })); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } return AnalysisUpdateContentParams(files); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.updateContent params', json); } } factory AnalysisUpdateContentParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisUpdateContentParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['files'] = mapMap(files, keyCallback: (String value) => clientUriConverter?.toClientFilePath(value) ?? value, valueCallback: (Object value) => (value as dynamic).toJson()); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.updateContent', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisUpdateContentParams) { return mapEqual(files, other.files, (Object a, Object b) => a == b); } return false; } @override int get hashCode => Object.hashAll([...files.keys, ...files.values]); } /// analysis.updateContent result /// /// { /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisUpdateContentResult implements ResponseResult { AnalysisUpdateContentResult(); factory AnalysisUpdateContentResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { return AnalysisUpdateContentResult(); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.updateContent result', json); } } factory AnalysisUpdateContentResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalysisUpdateContentResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisUpdateContentResult) { return true; } return false; } @override int get hashCode => 0; } /// analysis.updateOptions params /// /// { /// "options": AnalysisOptions /// } /// /// Clients may not extend, implement or mix-in this class. class AnalysisUpdateOptionsParams implements RequestParams { /// The options that are to be used to control analysis. AnalysisOptions options; AnalysisUpdateOptionsParams(this.options); factory AnalysisUpdateOptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { AnalysisOptions options; if (json.containsKey('options')) { options = AnalysisOptions.fromJson( jsonDecoder, '$jsonPath.options', json['options'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'options'); } return AnalysisUpdateOptionsParams(options); } else { throw jsonDecoder.mismatch( jsonPath, 'analysis.updateOptions params', json); } } factory AnalysisUpdateOptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalysisUpdateOptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['options'] = options.toJson(clientUriConverter: clientUriConverter); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analysis.updateOptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalysisUpdateOptionsParams) { return options == other.options; } return false; } @override int get hashCode => options.hashCode; } /// analysis.updateOptions result /// /// Clients may not extend, implement or mix-in this class. class AnalysisUpdateOptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalysisUpdateOptionsResult; @override int get hashCode => 179689467; } /// analytics.enable params /// /// { /// "value": bool /// } /// /// Clients may not extend, implement or mix-in this class. class AnalyticsEnableParams implements RequestParams { /// Enable or disable analytics. bool value; AnalyticsEnableParams(this.value); factory AnalyticsEnableParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool value; if (json.containsKey('value')) { value = jsonDecoder.decodeBool('$jsonPath.value', json['value']); } else { throw jsonDecoder.mismatch(jsonPath, 'value'); } return AnalyticsEnableParams(value); } else { throw jsonDecoder.mismatch(jsonPath, 'analytics.enable params', json); } } factory AnalyticsEnableParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalyticsEnableParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['value'] = value; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'analytics.enable', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalyticsEnableParams) { return value == other.value; } return false; } @override int get hashCode => value.hashCode; } /// analytics.enable result /// /// Clients may not extend, implement or mix-in this class. class AnalyticsEnableResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalyticsEnableResult; @override int get hashCode => 237990792; } /// analytics.isEnabled params /// /// Clients may not extend, implement or mix-in this class. class AnalyticsIsEnabledParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analytics.isEnabled'); } @override bool operator ==(other) => other is AnalyticsIsEnabledParams; @override int get hashCode => 57215544; } /// analytics.isEnabled result /// /// { /// "enabled": bool /// } /// /// Clients may not extend, implement or mix-in this class. class AnalyticsIsEnabledResult implements ResponseResult { /// Whether sending analytics is enabled or not. bool enabled; AnalyticsIsEnabledResult(this.enabled); factory AnalyticsIsEnabledResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool enabled; if (json.containsKey('enabled')) { enabled = jsonDecoder.decodeBool('$jsonPath.enabled', json['enabled']); } else { throw jsonDecoder.mismatch(jsonPath, 'enabled'); } return AnalyticsIsEnabledResult(enabled); } else { throw jsonDecoder.mismatch(jsonPath, 'analytics.isEnabled result', json); } } factory AnalyticsIsEnabledResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return AnalyticsIsEnabledResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['enabled'] = enabled; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalyticsIsEnabledResult) { return enabled == other.enabled; } return false; } @override int get hashCode => enabled.hashCode; } /// analytics.sendEvent params /// /// { /// "action": String /// } /// /// Clients may not extend, implement or mix-in this class. class AnalyticsSendEventParams implements RequestParams { /// The value used to indicate which action was performed. String action; AnalyticsSendEventParams(this.action); factory AnalyticsSendEventParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String action; if (json.containsKey('action')) { action = jsonDecoder.decodeString('$jsonPath.action', json['action']); } else { throw jsonDecoder.mismatch(jsonPath, 'action'); } return AnalyticsSendEventParams(action); } else { throw jsonDecoder.mismatch(jsonPath, 'analytics.sendEvent params', json); } } factory AnalyticsSendEventParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalyticsSendEventParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['action'] = action; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analytics.sendEvent', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalyticsSendEventParams) { return action == other.action; } return false; } @override int get hashCode => action.hashCode; } /// analytics.sendEvent result /// /// Clients may not extend, implement or mix-in this class. class AnalyticsSendEventResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalyticsSendEventResult; @override int get hashCode => 227063188; } /// analytics.sendTiming params /// /// { /// "event": String /// "millis": int /// } /// /// Clients may not extend, implement or mix-in this class. class AnalyticsSendTimingParams implements RequestParams { /// The name of the event. String event; /// The duration of the event in milliseconds. int millis; AnalyticsSendTimingParams(this.event, this.millis); factory AnalyticsSendTimingParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String event; if (json.containsKey('event')) { event = jsonDecoder.decodeString('$jsonPath.event', json['event']); } else { throw jsonDecoder.mismatch(jsonPath, 'event'); } int millis; if (json.containsKey('millis')) { millis = jsonDecoder.decodeInt('$jsonPath.millis', json['millis']); } else { throw jsonDecoder.mismatch(jsonPath, 'millis'); } return AnalyticsSendTimingParams(event, millis); } else { throw jsonDecoder.mismatch(jsonPath, 'analytics.sendTiming params', json); } } factory AnalyticsSendTimingParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return AnalyticsSendTimingParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['event'] = event; result['millis'] = millis; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'analytics.sendTiming', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is AnalyticsSendTimingParams) { return event == other.event && millis == other.millis; } return false; } @override int get hashCode => Object.hash( event, millis, ); } /// analytics.sendTiming result /// /// Clients may not extend, implement or mix-in this class. class AnalyticsSendTimingResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is AnalyticsSendTimingResult; @override int get hashCode => 875010924; } /// BulkFix /// /// { /// "path": FilePath /// "fixes": List /// } /// /// Clients may not extend, implement or mix-in this class. class BulkFix implements HasToJson { /// The path of the library. String path; /// A list of bulk fix details. List fixes; BulkFix(this.path, this.fixes); factory BulkFix.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String path; if (json.containsKey('path')) { path = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.path', json['path'])) ?? jsonDecoder.decodeString('$jsonPath.path', json['path']); } else { throw jsonDecoder.mismatch(jsonPath, 'path'); } List fixes; if (json.containsKey('fixes')) { fixes = jsonDecoder.decodeList( '$jsonPath.fixes', json['fixes'], (String jsonPath, Object? json) => BulkFixDetail.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'fixes'); } return BulkFix(path, fixes); } else { throw jsonDecoder.mismatch(jsonPath, 'BulkFix', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['path'] = clientUriConverter?.toClientFilePath(path) ?? path; result['fixes'] = fixes .map((BulkFixDetail value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is BulkFix) { return path == other.path && listEqual( fixes, other.fixes, (BulkFixDetail a, BulkFixDetail b) => a == b); } return false; } @override int get hashCode => Object.hash( path, Object.hashAll(fixes), ); } /// BulkFixDetail /// /// { /// "code": String /// "occurrences": int /// } /// /// Clients may not extend, implement or mix-in this class. class BulkFixDetail implements HasToJson { /// The code of the diagnostic associated with the fix. String code; /// The number times the associated diagnostic was fixed in the associated /// source edit. int occurrences; BulkFixDetail(this.code, this.occurrences); factory BulkFixDetail.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String code; if (json.containsKey('code')) { code = jsonDecoder.decodeString('$jsonPath.code', json['code']); } else { throw jsonDecoder.mismatch(jsonPath, 'code'); } int occurrences; if (json.containsKey('occurrences')) { occurrences = jsonDecoder.decodeInt('$jsonPath.occurrences', json['occurrences']); } else { throw jsonDecoder.mismatch(jsonPath, 'occurrences'); } return BulkFixDetail(code, occurrences); } else { throw jsonDecoder.mismatch(jsonPath, 'BulkFixDetail', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['code'] = code; result['occurrences'] = occurrences; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is BulkFixDetail) { return code == other.code && occurrences == other.occurrences; } return false; } @override int get hashCode => Object.hash( code, occurrences, ); } /// ClosingLabel /// /// { /// "offset": int /// "length": int /// "label": String /// } /// /// Clients may not extend, implement or mix-in this class. class ClosingLabel implements HasToJson { /// The offset of the construct being labelled. int offset; /// The length of the whole construct to be labelled. int length; /// The label associated with this range that should be displayed to the /// user. String label; ClosingLabel(this.offset, this.length, this.label); factory ClosingLabel.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } String label; if (json.containsKey('label')) { label = jsonDecoder.decodeString('$jsonPath.label', json['label']); } else { throw jsonDecoder.mismatch(jsonPath, 'label'); } return ClosingLabel(offset, length, label); } else { throw jsonDecoder.mismatch(jsonPath, 'ClosingLabel', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; result['label'] = label; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ClosingLabel) { return offset == other.offset && length == other.length && label == other.label; } return false; } @override int get hashCode => Object.hash( offset, length, label, ); } /// CompletionCaseMatchingMode /// /// enum { /// FIRST_CHAR /// ALL_CHARS /// NONE /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionCaseMatchingMode implements Enum { /// Match the first character case only when filtering completions, the /// default for this enumeration. static const CompletionCaseMatchingMode FIRST_CHAR = CompletionCaseMatchingMode._('FIRST_CHAR'); /// Match all character cases when filtering completion lists. static const CompletionCaseMatchingMode ALL_CHARS = CompletionCaseMatchingMode._('ALL_CHARS'); /// Do not match character cases when filtering completion lists. static const CompletionCaseMatchingMode NONE = CompletionCaseMatchingMode._('NONE'); /// A list containing all of the enum values that are defined. static const List VALUES = [FIRST_CHAR, ALL_CHARS, NONE]; @override final String name; const CompletionCaseMatchingMode._(this.name); factory CompletionCaseMatchingMode(String name) { switch (name) { case 'FIRST_CHAR': return FIRST_CHAR; case 'ALL_CHARS': return ALL_CHARS; case 'NONE': return NONE; } throw Exception('Illegal enum value: $name'); } factory CompletionCaseMatchingMode.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return CompletionCaseMatchingMode(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'CompletionCaseMatchingMode', json); } @override String toString() => 'CompletionCaseMatchingMode.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// completion.existingImports params /// /// { /// "file": FilePath /// "imports": ExistingImports /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionExistingImportsParams implements HasToJson { /// The defining file of the library. String file; /// The existing imports in the library. ExistingImports imports; CompletionExistingImportsParams(this.file, this.imports); factory CompletionExistingImportsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } ExistingImports imports; if (json.containsKey('imports')) { imports = ExistingImports.fromJson( jsonDecoder, '$jsonPath.imports', json['imports'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'imports'); } return CompletionExistingImportsParams(file, imports); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.existingImports params', json); } } factory CompletionExistingImportsParams.fromNotification( Notification notification, {required ClientUriConverter? clientUriConverter}) { return CompletionExistingImportsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['imports'] = imports.toJson(clientUriConverter: clientUriConverter); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification('completion.existingImports', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionExistingImportsParams) { return file == other.file && imports == other.imports; } return false; } @override int get hashCode => Object.hash( file, imports, ); } /// completion.getSuggestionDetails2 params /// /// { /// "file": FilePath /// "offset": int /// "completion": String /// "libraryUri": String /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionGetSuggestionDetails2Params implements RequestParams { /// The path of the file into which this completion is being inserted. String file; /// The offset in the file where the completion will be inserted. int offset; /// The completion from the selected CompletionSuggestion. It could be a name /// of a class, or a name of a constructor in form /// "typeName.constructorName()", or an enumeration constant in form /// "enumName.constantName", etc. String completion; /// The URI of the library to import, so that the element referenced in the /// completion becomes accessible. String libraryUri; CompletionGetSuggestionDetails2Params( this.file, this.offset, this.completion, this.libraryUri); factory CompletionGetSuggestionDetails2Params.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } String completion; if (json.containsKey('completion')) { completion = jsonDecoder.decodeString( '$jsonPath.completion', json['completion']); } else { throw jsonDecoder.mismatch(jsonPath, 'completion'); } String libraryUri; if (json.containsKey('libraryUri')) { libraryUri = jsonDecoder.decodeString( '$jsonPath.libraryUri', json['libraryUri']); } else { throw jsonDecoder.mismatch(jsonPath, 'libraryUri'); } return CompletionGetSuggestionDetails2Params( file, offset, completion, libraryUri); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.getSuggestionDetails2 params', json); } } factory CompletionGetSuggestionDetails2Params.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return CompletionGetSuggestionDetails2Params.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['completion'] = completion; result['libraryUri'] = libraryUri; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'completion.getSuggestionDetails2', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionGetSuggestionDetails2Params) { return file == other.file && offset == other.offset && completion == other.completion && libraryUri == other.libraryUri; } return false; } @override int get hashCode => Object.hash( file, offset, completion, libraryUri, ); } /// completion.getSuggestionDetails2 result /// /// { /// "completion": String /// "change": SourceChange /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionGetSuggestionDetails2Result implements ResponseResult { /// The full text to insert, which possibly includes now an import prefix. /// The client should insert this text, not the completion from the selected /// CompletionSuggestion. String completion; /// A change for the client to apply to make the accepted completion /// suggestion available. In most cases the change is to add a new import /// directive to the file. SourceChange change; CompletionGetSuggestionDetails2Result(this.completion, this.change); factory CompletionGetSuggestionDetails2Result.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String completion; if (json.containsKey('completion')) { completion = jsonDecoder.decodeString( '$jsonPath.completion', json['completion']); } else { throw jsonDecoder.mismatch(jsonPath, 'completion'); } SourceChange change; if (json.containsKey('change')) { change = SourceChange.fromJson( jsonDecoder, '$jsonPath.change', json['change'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'change'); } return CompletionGetSuggestionDetails2Result(completion, change); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.getSuggestionDetails2 result', json); } } factory CompletionGetSuggestionDetails2Result.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return CompletionGetSuggestionDetails2Result.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['completion'] = completion; result['change'] = change.toJson(clientUriConverter: clientUriConverter); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionGetSuggestionDetails2Result) { return completion == other.completion && change == other.change; } return false; } @override int get hashCode => Object.hash( completion, change, ); } /// completion.getSuggestions2 params /// /// { /// "file": FilePath /// "offset": int /// "maxResults": int /// "completionCaseMatchingMode": optional CompletionCaseMatchingMode /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionGetSuggestions2Params implements RequestParams { /// The file containing the point at which suggestions are to be made. String file; /// The offset within the file at which suggestions are to be made. int offset; /// The maximum number of suggestions to return. If the number of suggestions /// after filtering is greater than the maxResults, then isIncomplete is set /// to true. int maxResults; /// The mode of code completion being invoked. If no value is provided, /// MATCH_FIRST_CHAR will be assumed. CompletionCaseMatchingMode? completionCaseMatchingMode; /// The mode of code completion being invoked. If no value is provided, BASIC /// will be assumed. BASIC is also the only currently supported. CompletionMode? completionMode; /// The number of times that the user has invoked code completion at the same /// code location, counting from 1. If no value is provided, 1 will be /// assumed. int? invocationCount; /// The approximate time in milliseconds that the server should spend. The /// server will perform some steps anyway, even if it takes longer than the /// specified timeout. This field is intended to be used for benchmarking, /// and usually should not be provided, so that the default timeout is used. int? timeout; CompletionGetSuggestions2Params(this.file, this.offset, this.maxResults, {this.completionCaseMatchingMode, this.completionMode, this.invocationCount, this.timeout}); factory CompletionGetSuggestions2Params.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int maxResults; if (json.containsKey('maxResults')) { maxResults = jsonDecoder.decodeInt('$jsonPath.maxResults', json['maxResults']); } else { throw jsonDecoder.mismatch(jsonPath, 'maxResults'); } CompletionCaseMatchingMode? completionCaseMatchingMode; if (json.containsKey('completionCaseMatchingMode')) { completionCaseMatchingMode = CompletionCaseMatchingMode.fromJson( jsonDecoder, '$jsonPath.completionCaseMatchingMode', json['completionCaseMatchingMode'], clientUriConverter: clientUriConverter); } CompletionMode? completionMode; if (json.containsKey('completionMode')) { completionMode = CompletionMode.fromJson( jsonDecoder, '$jsonPath.completionMode', json['completionMode'], clientUriConverter: clientUriConverter); } int? invocationCount; if (json.containsKey('invocationCount')) { invocationCount = jsonDecoder.decodeInt( '$jsonPath.invocationCount', json['invocationCount']); } int? timeout; if (json.containsKey('timeout')) { timeout = jsonDecoder.decodeInt('$jsonPath.timeout', json['timeout']); } return CompletionGetSuggestions2Params(file, offset, maxResults, completionCaseMatchingMode: completionCaseMatchingMode, completionMode: completionMode, invocationCount: invocationCount, timeout: timeout); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.getSuggestions2 params', json); } } factory CompletionGetSuggestions2Params.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return CompletionGetSuggestions2Params.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['maxResults'] = maxResults; var completionCaseMatchingMode = this.completionCaseMatchingMode; if (completionCaseMatchingMode != null) { result['completionCaseMatchingMode'] = completionCaseMatchingMode.toJson( clientUriConverter: clientUriConverter); } var completionMode = this.completionMode; if (completionMode != null) { result['completionMode'] = completionMode.toJson(clientUriConverter: clientUriConverter); } var invocationCount = this.invocationCount; if (invocationCount != null) { result['invocationCount'] = invocationCount; } var timeout = this.timeout; if (timeout != null) { result['timeout'] = timeout; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'completion.getSuggestions2', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionGetSuggestions2Params) { return file == other.file && offset == other.offset && maxResults == other.maxResults && completionCaseMatchingMode == other.completionCaseMatchingMode && completionMode == other.completionMode && invocationCount == other.invocationCount && timeout == other.timeout; } return false; } @override int get hashCode => Object.hash( file, offset, maxResults, completionCaseMatchingMode, completionMode, invocationCount, timeout, ); } /// completion.getSuggestions2 result /// /// { /// "replacementOffset": int /// "replacementLength": int /// "suggestions": List /// "isIncomplete": bool /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionGetSuggestions2Result implements ResponseResult { /// The offset of the start of the text to be replaced. This will be /// different from the offset used to request the completion suggestions if /// there was a portion of an identifier before the original offset. In /// particular, the replacementOffset will be the offset of the beginning of /// said identifier. int replacementOffset; /// The length of the text to be replaced if the remainder of the identifier /// containing the cursor is to be replaced when the suggestion is applied /// (that is, the number of characters in the existing identifier). int replacementLength; /// The completion suggestions being reported. This list is filtered by the /// already existing prefix, and sorted first by relevance, and (if the same) /// by the suggestion text. The list will have at most maxResults items. If /// the user types a new keystroke, the client is expected to either do local /// filtering (when the returned list was complete), or ask the server again /// (if isIncomplete was true). /// /// This list contains suggestions from both imported, and not yet imported /// libraries. Items from not yet imported libraries will have isNotImported /// set to true. List suggestions; /// True if the number of suggestions after filtering was greater than the /// requested maxResults. bool isIncomplete; CompletionGetSuggestions2Result(this.replacementOffset, this.replacementLength, this.suggestions, this.isIncomplete); factory CompletionGetSuggestions2Result.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int replacementOffset; if (json.containsKey('replacementOffset')) { replacementOffset = jsonDecoder.decodeInt( '$jsonPath.replacementOffset', json['replacementOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'replacementOffset'); } int replacementLength; if (json.containsKey('replacementLength')) { replacementLength = jsonDecoder.decodeInt( '$jsonPath.replacementLength', json['replacementLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'replacementLength'); } List suggestions; if (json.containsKey('suggestions')) { suggestions = jsonDecoder.decodeList( '$jsonPath.suggestions', json['suggestions'], (String jsonPath, Object? json) => CompletionSuggestion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'suggestions'); } bool isIncomplete; if (json.containsKey('isIncomplete')) { isIncomplete = jsonDecoder.decodeBool( '$jsonPath.isIncomplete', json['isIncomplete']); } else { throw jsonDecoder.mismatch(jsonPath, 'isIncomplete'); } return CompletionGetSuggestions2Result( replacementOffset, replacementLength, suggestions, isIncomplete); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.getSuggestions2 result', json); } } factory CompletionGetSuggestions2Result.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return CompletionGetSuggestions2Result.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['replacementOffset'] = replacementOffset; result['replacementLength'] = replacementLength; result['suggestions'] = suggestions .map((CompletionSuggestion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['isIncomplete'] = isIncomplete; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionGetSuggestions2Result) { return replacementOffset == other.replacementOffset && replacementLength == other.replacementLength && listEqual(suggestions, other.suggestions, (CompletionSuggestion a, CompletionSuggestion b) => a == b) && isIncomplete == other.isIncomplete; } return false; } @override int get hashCode => Object.hash( replacementOffset, replacementLength, Object.hashAll(suggestions), isIncomplete, ); } /// CompletionMode /// /// enum { /// BASIC /// SMART /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionMode implements Enum { /// Basic code completion invocation type, and the default for this /// enumeration. static const CompletionMode BASIC = CompletionMode._('BASIC'); /// Smart code completion, currently not implemented. static const CompletionMode SMART = CompletionMode._('SMART'); /// A list containing all of the enum values that are defined. static const List VALUES = [BASIC, SMART]; @override final String name; const CompletionMode._(this.name); factory CompletionMode(String name) { switch (name) { case 'BASIC': return BASIC; case 'SMART': return SMART; } throw Exception('Illegal enum value: $name'); } factory CompletionMode.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return CompletionMode(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'CompletionMode', json); } @override String toString() => 'CompletionMode.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// completion.registerLibraryPaths params /// /// { /// "paths": List /// } /// /// Clients may not extend, implement or mix-in this class. class CompletionRegisterLibraryPathsParams implements RequestParams { /// A list of objects each containing a path and the additional libraries /// from which the client is interested in receiving completion suggestions. /// If one configured path is beneath another, the descendant will override /// the ancestors' configured libraries of interest. List paths; CompletionRegisterLibraryPathsParams(this.paths); factory CompletionRegisterLibraryPathsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List paths; if (json.containsKey('paths')) { paths = jsonDecoder.decodeList( '$jsonPath.paths', json['paths'], (String jsonPath, Object? json) => LibraryPathSet.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'paths'); } return CompletionRegisterLibraryPathsParams(paths); } else { throw jsonDecoder.mismatch( jsonPath, 'completion.registerLibraryPaths params', json); } } factory CompletionRegisterLibraryPathsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return CompletionRegisterLibraryPathsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['paths'] = paths .map((LibraryPathSet value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'completion.registerLibraryPaths', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is CompletionRegisterLibraryPathsParams) { return listEqual( paths, other.paths, (LibraryPathSet a, LibraryPathSet b) => a == b); } return false; } @override int get hashCode => Object.hashAll(paths); } /// completion.registerLibraryPaths result /// /// Clients may not extend, implement or mix-in this class. class CompletionRegisterLibraryPathsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is CompletionRegisterLibraryPathsResult; @override int get hashCode => 104675661; } /// ContextData /// /// { /// "name": String /// "explicitFileCount": int /// "implicitFileCount": int /// "workItemQueueLength": int /// "cacheEntryExceptions": List /// } /// /// Clients may not extend, implement or mix-in this class. class ContextData implements HasToJson { /// The name of the context. String name; /// Explicitly analyzed files. int explicitFileCount; /// Implicitly analyzed files. int implicitFileCount; /// The number of work items in the queue. int workItemQueueLength; /// Exceptions associated with cache entries. List cacheEntryExceptions; ContextData(this.name, this.explicitFileCount, this.implicitFileCount, this.workItemQueueLength, this.cacheEntryExceptions); factory ContextData.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } int explicitFileCount; if (json.containsKey('explicitFileCount')) { explicitFileCount = jsonDecoder.decodeInt( '$jsonPath.explicitFileCount', json['explicitFileCount']); } else { throw jsonDecoder.mismatch(jsonPath, 'explicitFileCount'); } int implicitFileCount; if (json.containsKey('implicitFileCount')) { implicitFileCount = jsonDecoder.decodeInt( '$jsonPath.implicitFileCount', json['implicitFileCount']); } else { throw jsonDecoder.mismatch(jsonPath, 'implicitFileCount'); } int workItemQueueLength; if (json.containsKey('workItemQueueLength')) { workItemQueueLength = jsonDecoder.decodeInt( '$jsonPath.workItemQueueLength', json['workItemQueueLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'workItemQueueLength'); } List cacheEntryExceptions; if (json.containsKey('cacheEntryExceptions')) { cacheEntryExceptions = jsonDecoder.decodeList( '$jsonPath.cacheEntryExceptions', json['cacheEntryExceptions'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'cacheEntryExceptions'); } return ContextData(name, explicitFileCount, implicitFileCount, workItemQueueLength, cacheEntryExceptions); } else { throw jsonDecoder.mismatch(jsonPath, 'ContextData', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['explicitFileCount'] = explicitFileCount; result['implicitFileCount'] = implicitFileCount; result['workItemQueueLength'] = workItemQueueLength; result['cacheEntryExceptions'] = cacheEntryExceptions; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ContextData) { return name == other.name && explicitFileCount == other.explicitFileCount && implicitFileCount == other.implicitFileCount && workItemQueueLength == other.workItemQueueLength && listEqual(cacheEntryExceptions, other.cacheEntryExceptions, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( name, explicitFileCount, implicitFileCount, workItemQueueLength, Object.hashAll(cacheEntryExceptions), ); } /// convertGetterToMethod feedback /// /// Clients may not extend, implement or mix-in this class. class ConvertGetterToMethodFeedback extends RefactoringFeedback implements HasToJson { @override bool operator ==(other) => other is ConvertGetterToMethodFeedback; @override int get hashCode => 616032599; } /// convertGetterToMethod options /// /// Clients may not extend, implement or mix-in this class. class ConvertGetterToMethodOptions extends RefactoringOptions implements HasToJson { @override bool operator ==(other) => other is ConvertGetterToMethodOptions; @override int get hashCode => 488848400; } /// convertMethodToGetter feedback /// /// Clients may not extend, implement or mix-in this class. class ConvertMethodToGetterFeedback extends RefactoringFeedback implements HasToJson { @override bool operator ==(other) => other is ConvertMethodToGetterFeedback; @override int get hashCode => 165291526; } /// convertMethodToGetter options /// /// Clients may not extend, implement or mix-in this class. class ConvertMethodToGetterOptions extends RefactoringOptions implements HasToJson { @override bool operator ==(other) => other is ConvertMethodToGetterOptions; @override int get hashCode => 27952290; } /// diagnostic.getDiagnostics params /// /// Clients may not extend, implement or mix-in this class. class DiagnosticGetDiagnosticsParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'diagnostic.getDiagnostics'); } @override bool operator ==(other) => other is DiagnosticGetDiagnosticsParams; @override int get hashCode => 587526202; } /// diagnostic.getDiagnostics result /// /// { /// "contexts": List /// } /// /// Clients may not extend, implement or mix-in this class. class DiagnosticGetDiagnosticsResult implements ResponseResult { /// The list of analysis contexts. List contexts; DiagnosticGetDiagnosticsResult(this.contexts); factory DiagnosticGetDiagnosticsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List contexts; if (json.containsKey('contexts')) { contexts = jsonDecoder.decodeList( '$jsonPath.contexts', json['contexts'], (String jsonPath, Object? json) => ContextData.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'contexts'); } return DiagnosticGetDiagnosticsResult(contexts); } else { throw jsonDecoder.mismatch( jsonPath, 'diagnostic.getDiagnostics result', json); } } factory DiagnosticGetDiagnosticsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return DiagnosticGetDiagnosticsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['contexts'] = contexts .map((ContextData value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is DiagnosticGetDiagnosticsResult) { return listEqual( contexts, other.contexts, (ContextData a, ContextData b) => a == b); } return false; } @override int get hashCode => Object.hashAll(contexts); } /// diagnostic.getServerPort params /// /// Clients may not extend, implement or mix-in this class. class DiagnosticGetServerPortParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'diagnostic.getServerPort'); } @override bool operator ==(other) => other is DiagnosticGetServerPortParams; @override int get hashCode => 367508704; } /// diagnostic.getServerPort result /// /// { /// "port": int /// } /// /// Clients may not extend, implement or mix-in this class. class DiagnosticGetServerPortResult implements ResponseResult { /// The diagnostic server port. int port; DiagnosticGetServerPortResult(this.port); factory DiagnosticGetServerPortResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int port; if (json.containsKey('port')) { port = jsonDecoder.decodeInt('$jsonPath.port', json['port']); } else { throw jsonDecoder.mismatch(jsonPath, 'port'); } return DiagnosticGetServerPortResult(port); } else { throw jsonDecoder.mismatch( jsonPath, 'diagnostic.getServerPort result', json); } } factory DiagnosticGetServerPortResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return DiagnosticGetServerPortResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['port'] = port; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is DiagnosticGetServerPortResult) { return port == other.port; } return false; } @override int get hashCode => port.hashCode; } /// edit.bulkFixes params /// /// { /// "included": List /// "inTestMode": optional bool /// "updatePubspec": optional bool /// "codes": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class EditBulkFixesParams implements RequestParams { /// A list of the files and directories for which edits should be suggested. /// /// If a request is made with a path that is invalid, e.g. is not absolute /// and normalized, an error of type INVALID_FILE_PATH_FORMAT will be /// generated. If a request is made for a file which does not exist, or which /// is not currently subject to analysis (e.g. because it is not associated /// with any analysis root specified to analysis.setAnalysisRoots), an error /// of type FILE_NOT_ANALYZED will be generated. List included; /// A flag indicating whether the bulk fixes are being run in test mode. The /// only difference is that in test mode the fix processor will look for a /// configuration file that can modify the content of the data file used to /// compute the fixes when data-driven fixes are being considered. /// /// If this field is omitted the flag defaults to false. bool? inTestMode; /// A flag indicating whether to validate that the dependencies used by the /// included files are listed in the pubspec file. If specified, the fix /// processor will compute the set of packages imported in the source and /// check to see if they are listed in the corresponding pubspec file, and /// compute the fixes, if any. /// /// If this field is omitted the flag defaults to false. bool? updatePubspec; /// A list of diagnostic codes to be fixed. List? codes; EditBulkFixesParams(this.included, {this.inTestMode, this.updatePubspec, this.codes}); factory EditBulkFixesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List included; if (json.containsKey('included')) { included = jsonDecoder.decodeList( '$jsonPath.included', json['included'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'included'); } bool? inTestMode; if (json.containsKey('inTestMode')) { inTestMode = jsonDecoder.decodeBool('$jsonPath.inTestMode', json['inTestMode']); } bool? updatePubspec; if (json.containsKey('updatePubspec')) { updatePubspec = jsonDecoder.decodeBool( '$jsonPath.updatePubspec', json['updatePubspec']); } List? codes; if (json.containsKey('codes')) { codes = jsonDecoder.decodeList( '$jsonPath.codes', json['codes'], jsonDecoder.decodeString); } return EditBulkFixesParams(included, inTestMode: inTestMode, updatePubspec: updatePubspec, codes: codes); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.bulkFixes params', json); } } factory EditBulkFixesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditBulkFixesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['included'] = included .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); var inTestMode = this.inTestMode; if (inTestMode != null) { result['inTestMode'] = inTestMode; } var updatePubspec = this.updatePubspec; if (updatePubspec != null) { result['updatePubspec'] = updatePubspec; } var codes = this.codes; if (codes != null) { result['codes'] = codes; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'edit.bulkFixes', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditBulkFixesParams) { return listEqual( included, other.included, (String a, String b) => a == b) && inTestMode == other.inTestMode && updatePubspec == other.updatePubspec && listEqual(codes, other.codes, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(included), inTestMode, updatePubspec, Object.hashAll(codes ?? []), ); } /// edit.bulkFixes result /// /// { /// "message": String /// "edits": List /// "details": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditBulkFixesResult implements ResponseResult { /// An optional message explaining unapplied fixes. String message; /// A list of source edits to apply the recommended changes. List edits; /// Details that summarize the fixes associated with the recommended changes. List details; EditBulkFixesResult(this.message, this.edits, this.details); factory EditBulkFixesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String message; if (json.containsKey('message')) { message = jsonDecoder.decodeString('$jsonPath.message', json['message']); } else { throw jsonDecoder.mismatch(jsonPath, 'message'); } List edits; if (json.containsKey('edits')) { edits = jsonDecoder.decodeList( '$jsonPath.edits', json['edits'], (String jsonPath, Object? json) => SourceFileEdit.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'edits'); } List details; if (json.containsKey('details')) { details = jsonDecoder.decodeList( '$jsonPath.details', json['details'], (String jsonPath, Object? json) => BulkFix.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'details'); } return EditBulkFixesResult(message, edits, details); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.bulkFixes result', json); } } factory EditBulkFixesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditBulkFixesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['message'] = message; result['edits'] = edits .map((SourceFileEdit value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['details'] = details .map((BulkFix value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditBulkFixesResult) { return message == other.message && listEqual(edits, other.edits, (SourceFileEdit a, SourceFileEdit b) => a == b) && listEqual(details, other.details, (BulkFix a, BulkFix b) => a == b); } return false; } @override int get hashCode => Object.hash( message, Object.hashAll(edits), Object.hashAll(details), ); } /// edit.formatIfEnabled params /// /// { /// "directories": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditFormatIfEnabledParams implements RequestParams { /// The paths of the directories containing the code to be formatted. List directories; EditFormatIfEnabledParams(this.directories); factory EditFormatIfEnabledParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List directories; if (json.containsKey('directories')) { directories = jsonDecoder.decodeList( '$jsonPath.directories', json['directories'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'directories'); } return EditFormatIfEnabledParams(directories); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.formatIfEnabled params', json); } } factory EditFormatIfEnabledParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditFormatIfEnabledParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['directories'] = directories .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.formatIfEnabled', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditFormatIfEnabledParams) { return listEqual( directories, other.directories, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hashAll(directories); } /// edit.formatIfEnabled result /// /// { /// "edits": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditFormatIfEnabledResult implements ResponseResult { /// The edit(s) to be applied in order to format the code. The list will be /// empty if none of the files were formatted, whether because they were not /// eligible to be formatted or because they were already formatted. List edits; EditFormatIfEnabledResult(this.edits); factory EditFormatIfEnabledResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List edits; if (json.containsKey('edits')) { edits = jsonDecoder.decodeList( '$jsonPath.edits', json['edits'], (String jsonPath, Object? json) => SourceFileEdit.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'edits'); } return EditFormatIfEnabledResult(edits); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.formatIfEnabled result', json); } } factory EditFormatIfEnabledResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditFormatIfEnabledResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['edits'] = edits .map((SourceFileEdit value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditFormatIfEnabledResult) { return listEqual( edits, other.edits, (SourceFileEdit a, SourceFileEdit b) => a == b); } return false; } @override int get hashCode => Object.hashAll(edits); } /// edit.format params /// /// { /// "file": FilePath /// "selectionOffset": int /// "selectionLength": int /// "lineLength": optional int /// } /// /// Clients may not extend, implement or mix-in this class. class EditFormatParams implements RequestParams { /// The file containing the code to be formatted. String file; /// The offset of the current selection in the file. int selectionOffset; /// The length of the current selection in the file. int selectionLength; /// The line length to be used by the formatter. int? lineLength; EditFormatParams(this.file, this.selectionOffset, this.selectionLength, {this.lineLength}); factory EditFormatParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int selectionOffset; if (json.containsKey('selectionOffset')) { selectionOffset = jsonDecoder.decodeInt( '$jsonPath.selectionOffset', json['selectionOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'selectionOffset'); } int selectionLength; if (json.containsKey('selectionLength')) { selectionLength = jsonDecoder.decodeInt( '$jsonPath.selectionLength', json['selectionLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'selectionLength'); } int? lineLength; if (json.containsKey('lineLength')) { lineLength = jsonDecoder.decodeInt('$jsonPath.lineLength', json['lineLength']); } return EditFormatParams(file, selectionOffset, selectionLength, lineLength: lineLength); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.format params', json); } } factory EditFormatParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditFormatParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['selectionOffset'] = selectionOffset; result['selectionLength'] = selectionLength; var lineLength = this.lineLength; if (lineLength != null) { result['lineLength'] = lineLength; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'edit.format', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditFormatParams) { return file == other.file && selectionOffset == other.selectionOffset && selectionLength == other.selectionLength && lineLength == other.lineLength; } return false; } @override int get hashCode => Object.hash( file, selectionOffset, selectionLength, lineLength, ); } /// edit.format result /// /// { /// "edits": List /// "selectionOffset": int /// "selectionLength": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditFormatResult implements ResponseResult { /// The edit(s) to be applied in order to format the code. The list will be /// empty if the code was already formatted (there are no changes). List edits; /// The offset of the selection after formatting the code. int selectionOffset; /// The length of the selection after formatting the code. int selectionLength; EditFormatResult(this.edits, this.selectionOffset, this.selectionLength); factory EditFormatResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List edits; if (json.containsKey('edits')) { edits = jsonDecoder.decodeList( '$jsonPath.edits', json['edits'], (String jsonPath, Object? json) => SourceEdit.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'edits'); } int selectionOffset; if (json.containsKey('selectionOffset')) { selectionOffset = jsonDecoder.decodeInt( '$jsonPath.selectionOffset', json['selectionOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'selectionOffset'); } int selectionLength; if (json.containsKey('selectionLength')) { selectionLength = jsonDecoder.decodeInt( '$jsonPath.selectionLength', json['selectionLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'selectionLength'); } return EditFormatResult(edits, selectionOffset, selectionLength); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.format result', json); } } factory EditFormatResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditFormatResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['edits'] = edits .map((SourceEdit value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['selectionOffset'] = selectionOffset; result['selectionLength'] = selectionLength; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditFormatResult) { return listEqual( edits, other.edits, (SourceEdit a, SourceEdit b) => a == b) && selectionOffset == other.selectionOffset && selectionLength == other.selectionLength; } return false; } @override int get hashCode => Object.hash( Object.hashAll(edits), selectionOffset, selectionLength, ); } /// edit.getAssists params /// /// { /// "file": FilePath /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetAssistsParams implements RequestParams { /// The file containing the code for which assists are being requested. String file; /// The offset of the code for which assists are being requested. int offset; /// The length of the code for which assists are being requested. int length; EditGetAssistsParams(this.file, this.offset, this.length); factory EditGetAssistsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return EditGetAssistsParams(file, offset, length); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getAssists params', json); } } factory EditGetAssistsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditGetAssistsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'edit.getAssists', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetAssistsParams) { return file == other.file && offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( file, offset, length, ); } /// edit.getAssists result /// /// { /// "assists": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetAssistsResult implements ResponseResult { /// The assists that are available at the given location. List assists; EditGetAssistsResult(this.assists); factory EditGetAssistsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List assists; if (json.containsKey('assists')) { assists = jsonDecoder.decodeList( '$jsonPath.assists', json['assists'], (String jsonPath, Object? json) => SourceChange.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'assists'); } return EditGetAssistsResult(assists); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getAssists result', json); } } factory EditGetAssistsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetAssistsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['assists'] = assists .map((SourceChange value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetAssistsResult) { return listEqual( assists, other.assists, (SourceChange a, SourceChange b) => a == b); } return false; } @override int get hashCode => Object.hashAll(assists); } /// edit.getAvailableRefactorings params /// /// { /// "file": FilePath /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetAvailableRefactoringsParams implements RequestParams { /// The file containing the code on which the refactoring would be based. String file; /// The offset of the code on which the refactoring would be based. int offset; /// The length of the code on which the refactoring would be based. int length; EditGetAvailableRefactoringsParams(this.file, this.offset, this.length); factory EditGetAvailableRefactoringsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return EditGetAvailableRefactoringsParams(file, offset, length); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getAvailableRefactorings params', json); } } factory EditGetAvailableRefactoringsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditGetAvailableRefactoringsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.getAvailableRefactorings', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetAvailableRefactoringsParams) { return file == other.file && offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( file, offset, length, ); } /// edit.getAvailableRefactorings result /// /// { /// "kinds": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetAvailableRefactoringsResult implements ResponseResult { /// The kinds of refactorings that are valid for the given selection. List kinds; EditGetAvailableRefactoringsResult(this.kinds); factory EditGetAvailableRefactoringsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List kinds; if (json.containsKey('kinds')) { kinds = jsonDecoder.decodeList( '$jsonPath.kinds', json['kinds'], (String jsonPath, Object? json) => RefactoringKind.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'kinds'); } return EditGetAvailableRefactoringsResult(kinds); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getAvailableRefactorings result', json); } } factory EditGetAvailableRefactoringsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetAvailableRefactoringsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['kinds'] = kinds .map((RefactoringKind value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetAvailableRefactoringsResult) { return listEqual( kinds, other.kinds, (RefactoringKind a, RefactoringKind b) => a == b); } return false; } @override int get hashCode => Object.hashAll(kinds); } /// edit.getFixes params /// /// { /// "file": FilePath /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetFixesParams implements RequestParams { /// The file containing the errors for which fixes are being requested. String file; /// The offset used to select the errors for which fixes will be returned. int offset; EditGetFixesParams(this.file, this.offset); factory EditGetFixesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return EditGetFixesParams(file, offset); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getFixes params', json); } } factory EditGetFixesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditGetFixesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'edit.getFixes', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetFixesParams) { return file == other.file && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, offset, ); } /// edit.getFixes result /// /// { /// "fixes": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetFixesResult implements ResponseResult { /// The fixes that are available for the errors at the given offset. List fixes; EditGetFixesResult(this.fixes); factory EditGetFixesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List fixes; if (json.containsKey('fixes')) { fixes = jsonDecoder.decodeList( '$jsonPath.fixes', json['fixes'], (String jsonPath, Object? json) => AnalysisErrorFixes.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'fixes'); } return EditGetFixesResult(fixes); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getFixes result', json); } } factory EditGetFixesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetFixesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['fixes'] = fixes .map((AnalysisErrorFixes value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetFixesResult) { return listEqual(fixes, other.fixes, (AnalysisErrorFixes a, AnalysisErrorFixes b) => a == b); } return false; } @override int get hashCode => Object.hashAll(fixes); } /// edit.getPostfixCompletion params /// /// { /// "file": FilePath /// "key": String /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetPostfixCompletionParams implements RequestParams { /// The file containing the postfix template to be expanded. String file; /// The unique name that identifies the template in use. String key; /// The offset used to identify the code to which the template will be /// applied. int offset; EditGetPostfixCompletionParams(this.file, this.key, this.offset); factory EditGetPostfixCompletionParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } String key; if (json.containsKey('key')) { key = jsonDecoder.decodeString('$jsonPath.key', json['key']); } else { throw jsonDecoder.mismatch(jsonPath, 'key'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return EditGetPostfixCompletionParams(file, key, offset); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getPostfixCompletion params', json); } } factory EditGetPostfixCompletionParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditGetPostfixCompletionParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['key'] = key; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.getPostfixCompletion', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetPostfixCompletionParams) { return file == other.file && key == other.key && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, key, offset, ); } /// edit.getPostfixCompletion result /// /// { /// "change": SourceChange /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetPostfixCompletionResult implements ResponseResult { /// The change to be applied in order to complete the statement. SourceChange change; EditGetPostfixCompletionResult(this.change); factory EditGetPostfixCompletionResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceChange change; if (json.containsKey('change')) { change = SourceChange.fromJson( jsonDecoder, '$jsonPath.change', json['change'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'change'); } return EditGetPostfixCompletionResult(change); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getPostfixCompletion result', json); } } factory EditGetPostfixCompletionResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetPostfixCompletionResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['change'] = change.toJson(clientUriConverter: clientUriConverter); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetPostfixCompletionResult) { return change == other.change; } return false; } @override int get hashCode => change.hashCode; } /// edit.getRefactoring params /// /// { /// "kind": RefactoringKind /// "file": FilePath /// "offset": int /// "length": int /// "validateOnly": bool /// "options": optional RefactoringOptions /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetRefactoringParams implements RequestParams { /// The kind of refactoring to be performed. RefactoringKind kind; /// The file containing the code involved in the refactoring. String file; /// The offset of the region involved in the refactoring. int offset; /// The length of the region involved in the refactoring. int length; /// True if the client is only requesting that the values of the options be /// validated and no change be generated. bool validateOnly; /// Data used to provide values provided by the user. The structure of the /// data is dependent on the kind of refactoring being performed. The data /// that is expected is documented in the section titled Refactorings, /// labeled as "Options". This field can be omitted if the refactoring does /// not require any options or if the values of those options are not known. RefactoringOptions? options; EditGetRefactoringParams( this.kind, this.file, this.offset, this.length, this.validateOnly, {this.options}); factory EditGetRefactoringParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { RefactoringKind kind; if (json.containsKey('kind')) { kind = RefactoringKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } bool validateOnly; if (json.containsKey('validateOnly')) { validateOnly = jsonDecoder.decodeBool( '$jsonPath.validateOnly', json['validateOnly']); } else { throw jsonDecoder.mismatch(jsonPath, 'validateOnly'); } RefactoringOptions? options; if (json.containsKey('options')) { options = RefactoringOptions.fromJson( jsonDecoder, '$jsonPath.options', json['options'], kind, clientUriConverter: clientUriConverter); } return EditGetRefactoringParams(kind, file, offset, length, validateOnly, options: options); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getRefactoring params', json); } } factory EditGetRefactoringParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { var params = EditGetRefactoringParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); REQUEST_ID_REFACTORING_KINDS[request.id] = params.kind; return params; } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['length'] = length; result['validateOnly'] = validateOnly; var options = this.options; if (options != null) { result['options'] = options.toJson(clientUriConverter: clientUriConverter); } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.getRefactoring', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetRefactoringParams) { return kind == other.kind && file == other.file && offset == other.offset && length == other.length && validateOnly == other.validateOnly && options == other.options; } return false; } @override int get hashCode => Object.hash( kind, file, offset, length, validateOnly, options, ); } /// edit.getRefactoring result /// /// { /// "initialProblems": List /// "optionsProblems": List /// "finalProblems": List /// "feedback": optional RefactoringFeedback /// "change": optional SourceChange /// "potentialEdits": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetRefactoringResult implements ResponseResult { /// The initial status of the refactoring, i.e. problems related to the /// context in which the refactoring is requested. The array will be empty if /// there are no known problems. List initialProblems; /// The options validation status, i.e. problems in the given options, such /// as light-weight validation of a new name, flags compatibility, etc. The /// array will be empty if there are no known problems. List optionsProblems; /// The final status of the refactoring, i.e. problems identified in the /// result of a full, potentially expensive validation and / or change /// creation. The array will be empty if there are no known problems. List finalProblems; /// Data used to provide feedback to the user. The structure of the data is /// dependent on the kind of refactoring being created. The data that is /// returned is documented in the section titled Refactorings, labeled as /// "Feedback". RefactoringFeedback? feedback; /// The changes that are to be applied to affect the refactoring. This field /// will be omitted if there are problems that prevent a set of changes from /// being computed, such as having no options specified for a refactoring /// that requires them, or if only validation was requested. SourceChange? change; /// The ids of source edits that are not known to be valid. An edit is not /// known to be valid if there was insufficient type information for the /// server to be able to determine whether or not the code needs to be /// modified, such as when a member is being renamed and there is a reference /// to a member from an unknown type. This field will be omitted if the /// change field is omitted or if there are no potential edits for the /// refactoring. List? potentialEdits; EditGetRefactoringResult( this.initialProblems, this.optionsProblems, this.finalProblems, {this.feedback, this.change, this.potentialEdits}); factory EditGetRefactoringResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List initialProblems; if (json.containsKey('initialProblems')) { initialProblems = jsonDecoder.decodeList( '$jsonPath.initialProblems', json['initialProblems'], (String jsonPath, Object? json) => RefactoringProblem.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'initialProblems'); } List optionsProblems; if (json.containsKey('optionsProblems')) { optionsProblems = jsonDecoder.decodeList( '$jsonPath.optionsProblems', json['optionsProblems'], (String jsonPath, Object? json) => RefactoringProblem.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'optionsProblems'); } List finalProblems; if (json.containsKey('finalProblems')) { finalProblems = jsonDecoder.decodeList( '$jsonPath.finalProblems', json['finalProblems'], (String jsonPath, Object? json) => RefactoringProblem.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'finalProblems'); } RefactoringFeedback? feedback; if (json.containsKey('feedback')) { feedback = RefactoringFeedback.fromJson( jsonDecoder, '$jsonPath.feedback', json['feedback'], json, clientUriConverter: clientUriConverter); } SourceChange? change; if (json.containsKey('change')) { change = SourceChange.fromJson( jsonDecoder, '$jsonPath.change', json['change'], clientUriConverter: clientUriConverter); } List? potentialEdits; if (json.containsKey('potentialEdits')) { potentialEdits = jsonDecoder.decodeList('$jsonPath.potentialEdits', json['potentialEdits'], jsonDecoder.decodeString); } return EditGetRefactoringResult( initialProblems, optionsProblems, finalProblems, feedback: feedback, change: change, potentialEdits: potentialEdits); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.getRefactoring result', json); } } factory EditGetRefactoringResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetRefactoringResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['initialProblems'] = initialProblems .map((RefactoringProblem value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['optionsProblems'] = optionsProblems .map((RefactoringProblem value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['finalProblems'] = finalProblems .map((RefactoringProblem value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); var feedback = this.feedback; if (feedback != null) { result['feedback'] = feedback.toJson(clientUriConverter: clientUriConverter); } var change = this.change; if (change != null) { result['change'] = change.toJson(clientUriConverter: clientUriConverter); } var potentialEdits = this.potentialEdits; if (potentialEdits != null) { result['potentialEdits'] = potentialEdits; } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetRefactoringResult) { return listEqual(initialProblems, other.initialProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && listEqual(optionsProblems, other.optionsProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && listEqual(finalProblems, other.finalProblems, (RefactoringProblem a, RefactoringProblem b) => a == b) && feedback == other.feedback && change == other.change && listEqual(potentialEdits, other.potentialEdits, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(initialProblems), Object.hashAll(optionsProblems), Object.hashAll(finalProblems), feedback, change, Object.hashAll(potentialEdits ?? []), ); } /// edit.getStatementCompletion params /// /// { /// "file": FilePath /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetStatementCompletionParams implements RequestParams { /// The file containing the statement to be completed. String file; /// The offset used to identify the statement to be completed. int offset; EditGetStatementCompletionParams(this.file, this.offset); factory EditGetStatementCompletionParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return EditGetStatementCompletionParams(file, offset); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getStatementCompletion params', json); } } factory EditGetStatementCompletionParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditGetStatementCompletionParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.getStatementCompletion', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetStatementCompletionParams) { return file == other.file && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, offset, ); } /// edit.getStatementCompletion result /// /// { /// "change": SourceChange /// "whitespaceOnly": bool /// } /// /// Clients may not extend, implement or mix-in this class. class EditGetStatementCompletionResult implements ResponseResult { /// The change to be applied in order to complete the statement. SourceChange change; /// Will be true if the change contains nothing but whitespace characters, or /// is empty. bool whitespaceOnly; EditGetStatementCompletionResult(this.change, this.whitespaceOnly); factory EditGetStatementCompletionResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceChange change; if (json.containsKey('change')) { change = SourceChange.fromJson( jsonDecoder, '$jsonPath.change', json['change'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'change'); } bool whitespaceOnly; if (json.containsKey('whitespaceOnly')) { whitespaceOnly = jsonDecoder.decodeBool( '$jsonPath.whitespaceOnly', json['whitespaceOnly']); } else { throw jsonDecoder.mismatch(jsonPath, 'whitespaceOnly'); } return EditGetStatementCompletionResult(change, whitespaceOnly); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.getStatementCompletion result', json); } } factory EditGetStatementCompletionResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditGetStatementCompletionResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['change'] = change.toJson(clientUriConverter: clientUriConverter); result['whitespaceOnly'] = whitespaceOnly; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditGetStatementCompletionResult) { return change == other.change && whitespaceOnly == other.whitespaceOnly; } return false; } @override int get hashCode => Object.hash( change, whitespaceOnly, ); } /// edit.importElements params /// /// { /// "file": FilePath /// "elements": List /// "offset": optional int /// } /// /// Clients may not extend, implement or mix-in this class. class EditImportElementsParams implements RequestParams { /// The file in which the specified elements are to be made accessible. String file; /// The elements to be made accessible in the specified file. List elements; /// The offset at which the specified elements need to be made accessible. If /// provided, this is used to guard against adding imports for text that /// would be inserted into a comment, string literal, or other location where /// the imports would not be necessary. int? offset; EditImportElementsParams(this.file, this.elements, {this.offset}); factory EditImportElementsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } List elements; if (json.containsKey('elements')) { elements = jsonDecoder.decodeList( '$jsonPath.elements', json['elements'], (String jsonPath, Object? json) => ImportedElements.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'elements'); } int? offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } return EditImportElementsParams(file, elements, offset: offset); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.importElements params', json); } } factory EditImportElementsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditImportElementsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['elements'] = elements .map((ImportedElements value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); var offset = this.offset; if (offset != null) { result['offset'] = offset; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.importElements', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditImportElementsParams) { return file == other.file && listEqual(elements, other.elements, (ImportedElements a, ImportedElements b) => a == b) && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, Object.hashAll(elements), offset, ); } /// edit.importElements result /// /// { /// "edit": optional SourceFileEdit /// } /// /// Clients may not extend, implement or mix-in this class. class EditImportElementsResult implements ResponseResult { /// The edits to be applied in order to make the specified elements /// accessible. The file to be edited will be the defining compilation unit /// of the library containing the file specified in the request, which can be /// different than the file specified in the request if the specified file is /// a part file. This field will be omitted if there are no edits that need /// to be applied. SourceFileEdit? edit; EditImportElementsResult({this.edit}); factory EditImportElementsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceFileEdit? edit; if (json.containsKey('edit')) { edit = SourceFileEdit.fromJson( jsonDecoder, '$jsonPath.edit', json['edit'], clientUriConverter: clientUriConverter); } return EditImportElementsResult(edit: edit); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.importElements result', json); } } factory EditImportElementsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditImportElementsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var edit = this.edit; if (edit != null) { result['edit'] = edit.toJson(clientUriConverter: clientUriConverter); } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditImportElementsResult) { return edit == other.edit; } return false; } @override int get hashCode => edit.hashCode; } /// edit.isPostfixCompletionApplicable params /// /// { /// "file": FilePath /// "key": String /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class EditIsPostfixCompletionApplicableParams implements RequestParams { /// The file containing the postfix template to be expanded. String file; /// The unique name that identifies the template in use. String key; /// The offset used to identify the code to which the template will be /// applied. int offset; EditIsPostfixCompletionApplicableParams(this.file, this.key, this.offset); factory EditIsPostfixCompletionApplicableParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } String key; if (json.containsKey('key')) { key = jsonDecoder.decodeString('$jsonPath.key', json['key']); } else { throw jsonDecoder.mismatch(jsonPath, 'key'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return EditIsPostfixCompletionApplicableParams(file, key, offset); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.isPostfixCompletionApplicable params', json); } } factory EditIsPostfixCompletionApplicableParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditIsPostfixCompletionApplicableParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['key'] = key; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.isPostfixCompletionApplicable', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditIsPostfixCompletionApplicableParams) { return file == other.file && key == other.key && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, key, offset, ); } /// edit.isPostfixCompletionApplicable result /// /// { /// "value": bool /// } /// /// Clients may not extend, implement or mix-in this class. class EditIsPostfixCompletionApplicableResult implements ResponseResult { /// True if the template can be expanded at the given location. bool value; EditIsPostfixCompletionApplicableResult(this.value); factory EditIsPostfixCompletionApplicableResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool value; if (json.containsKey('value')) { value = jsonDecoder.decodeBool('$jsonPath.value', json['value']); } else { throw jsonDecoder.mismatch(jsonPath, 'value'); } return EditIsPostfixCompletionApplicableResult(value); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.isPostfixCompletionApplicable result', json); } } factory EditIsPostfixCompletionApplicableResult.fromResponse( Response response, {required ClientUriConverter? clientUriConverter}) { return EditIsPostfixCompletionApplicableResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['value'] = value; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditIsPostfixCompletionApplicableResult) { return value == other.value; } return false; } @override int get hashCode => value.hashCode; } /// edit.listPostfixCompletionTemplates params /// /// Clients may not extend, implement or mix-in this class. class EditListPostfixCompletionTemplatesParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.listPostfixCompletionTemplates'); } @override bool operator ==(other) => other is EditListPostfixCompletionTemplatesParams; @override int get hashCode => 690713107; } /// edit.listPostfixCompletionTemplates result /// /// { /// "templates": List /// } /// /// Clients may not extend, implement or mix-in this class. class EditListPostfixCompletionTemplatesResult implements ResponseResult { /// The list of available templates. List templates; EditListPostfixCompletionTemplatesResult(this.templates); factory EditListPostfixCompletionTemplatesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List templates; if (json.containsKey('templates')) { templates = jsonDecoder.decodeList( '$jsonPath.templates', json['templates'], (String jsonPath, Object? json) => PostfixTemplateDescriptor.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'templates'); } return EditListPostfixCompletionTemplatesResult(templates); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.listPostfixCompletionTemplates result', json); } } factory EditListPostfixCompletionTemplatesResult.fromResponse( Response response, {required ClientUriConverter? clientUriConverter}) { return EditListPostfixCompletionTemplatesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['templates'] = templates .map((PostfixTemplateDescriptor value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditListPostfixCompletionTemplatesResult) { return listEqual(templates, other.templates, (PostfixTemplateDescriptor a, PostfixTemplateDescriptor b) => a == b); } return false; } @override int get hashCode => Object.hashAll(templates); } /// edit.organizeDirectives params /// /// { /// "file": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class EditOrganizeDirectivesParams implements RequestParams { /// The Dart file to organize directives in. String file; EditOrganizeDirectivesParams(this.file); factory EditOrganizeDirectivesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } return EditOrganizeDirectivesParams(file); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.organizeDirectives params', json); } } factory EditOrganizeDirectivesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditOrganizeDirectivesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'edit.organizeDirectives', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditOrganizeDirectivesParams) { return file == other.file; } return false; } @override int get hashCode => file.hashCode; } /// edit.organizeDirectives result /// /// { /// "edit": SourceFileEdit /// } /// /// Clients may not extend, implement or mix-in this class. class EditOrganizeDirectivesResult implements ResponseResult { /// The file edit that is to be applied to the given file to effect the /// organizing. SourceFileEdit edit; EditOrganizeDirectivesResult(this.edit); factory EditOrganizeDirectivesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceFileEdit edit; if (json.containsKey('edit')) { edit = SourceFileEdit.fromJson( jsonDecoder, '$jsonPath.edit', json['edit'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'edit'); } return EditOrganizeDirectivesResult(edit); } else { throw jsonDecoder.mismatch( jsonPath, 'edit.organizeDirectives result', json); } } factory EditOrganizeDirectivesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditOrganizeDirectivesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['edit'] = edit.toJson(clientUriConverter: clientUriConverter); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditOrganizeDirectivesResult) { return edit == other.edit; } return false; } @override int get hashCode => edit.hashCode; } /// edit.sortMembers params /// /// { /// "file": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class EditSortMembersParams implements RequestParams { /// The Dart file to sort. String file; EditSortMembersParams(this.file); factory EditSortMembersParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } return EditSortMembersParams(file); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.sortMembers params', json); } } factory EditSortMembersParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return EditSortMembersParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'edit.sortMembers', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditSortMembersParams) { return file == other.file; } return false; } @override int get hashCode => file.hashCode; } /// edit.sortMembers result /// /// { /// "edit": SourceFileEdit /// } /// /// Clients may not extend, implement or mix-in this class. class EditSortMembersResult implements ResponseResult { /// The file edit that is to be applied to the given file to effect the /// sorting. SourceFileEdit edit; EditSortMembersResult(this.edit); factory EditSortMembersResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceFileEdit edit; if (json.containsKey('edit')) { edit = SourceFileEdit.fromJson( jsonDecoder, '$jsonPath.edit', json['edit'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'edit'); } return EditSortMembersResult(edit); } else { throw jsonDecoder.mismatch(jsonPath, 'edit.sortMembers result', json); } } factory EditSortMembersResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return EditSortMembersResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['edit'] = edit.toJson(clientUriConverter: clientUriConverter); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is EditSortMembersResult) { return edit == other.edit; } return false; } @override int get hashCode => edit.hashCode; } /// ElementDeclaration /// /// { /// "name": String /// "kind": ElementKind /// "fileIndex": int /// "offset": int /// "line": int /// "column": int /// "codeOffset": int /// "codeLength": int /// "className": optional String /// "mixinName": optional String /// "parameters": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class ElementDeclaration implements HasToJson { /// The name of the declaration. String name; /// The kind of the element that corresponds to the declaration. ElementKind kind; /// The index of the file (in the enclosing response). int fileIndex; /// The offset of the declaration name in the file. int offset; /// The one-based index of the line containing the declaration name. int line; /// The one-based index of the column containing the declaration name. int column; /// The offset of the first character of the declaration code in the file. int codeOffset; /// The length of the declaration code in the file. int codeLength; /// The name of the class enclosing this declaration. If the declaration is /// not a class member, this field will be absent. String? className; /// The name of the mixin enclosing this declaration. If the declaration is /// not a mixin member, this field will be absent. String? mixinName; /// The parameter list for the element. If the element is not a method or /// function this field will not be defined. If the element doesn't have /// parameters (e.g. getter), this field will not be defined. If the element /// has zero parameters, this field will have a value of "()". The value /// should not be treated as exact presentation of parameters, it is just /// approximation of parameters to give the user general idea. String? parameters; ElementDeclaration(this.name, this.kind, this.fileIndex, this.offset, this.line, this.column, this.codeOffset, this.codeLength, {this.className, this.mixinName, this.parameters}); factory ElementDeclaration.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } ElementKind kind; if (json.containsKey('kind')) { kind = ElementKind.fromJson(jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } int fileIndex; if (json.containsKey('fileIndex')) { fileIndex = jsonDecoder.decodeInt('$jsonPath.fileIndex', json['fileIndex']); } else { throw jsonDecoder.mismatch(jsonPath, 'fileIndex'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int line; if (json.containsKey('line')) { line = jsonDecoder.decodeInt('$jsonPath.line', json['line']); } else { throw jsonDecoder.mismatch(jsonPath, 'line'); } int column; if (json.containsKey('column')) { column = jsonDecoder.decodeInt('$jsonPath.column', json['column']); } else { throw jsonDecoder.mismatch(jsonPath, 'column'); } int codeOffset; if (json.containsKey('codeOffset')) { codeOffset = jsonDecoder.decodeInt('$jsonPath.codeOffset', json['codeOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'codeOffset'); } int codeLength; if (json.containsKey('codeLength')) { codeLength = jsonDecoder.decodeInt('$jsonPath.codeLength', json['codeLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'codeLength'); } String? className; if (json.containsKey('className')) { className = jsonDecoder.decodeString('$jsonPath.className', json['className']); } String? mixinName; if (json.containsKey('mixinName')) { mixinName = jsonDecoder.decodeString('$jsonPath.mixinName', json['mixinName']); } String? parameters; if (json.containsKey('parameters')) { parameters = jsonDecoder.decodeString( '$jsonPath.parameters', json['parameters']); } return ElementDeclaration( name, kind, fileIndex, offset, line, column, codeOffset, codeLength, className: className, mixinName: mixinName, parameters: parameters); } else { throw jsonDecoder.mismatch(jsonPath, 'ElementDeclaration', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); result['fileIndex'] = fileIndex; result['offset'] = offset; result['line'] = line; result['column'] = column; result['codeOffset'] = codeOffset; result['codeLength'] = codeLength; var className = this.className; if (className != null) { result['className'] = className; } var mixinName = this.mixinName; if (mixinName != null) { result['mixinName'] = mixinName; } var parameters = this.parameters; if (parameters != null) { result['parameters'] = parameters; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ElementDeclaration) { return name == other.name && kind == other.kind && fileIndex == other.fileIndex && offset == other.offset && line == other.line && column == other.column && codeOffset == other.codeOffset && codeLength == other.codeLength && className == other.className && mixinName == other.mixinName && parameters == other.parameters; } return false; } @override int get hashCode => Object.hash( name, kind, fileIndex, offset, line, column, codeOffset, codeLength, className, mixinName, parameters, ); } /// ExecutableFile /// /// { /// "file": FilePath /// "kind": ExecutableKind /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutableFile implements HasToJson { /// The path of the executable file. String file; /// The kind of the executable file. ExecutableKind kind; ExecutableFile(this.file, this.kind); factory ExecutableFile.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } ExecutableKind kind; if (json.containsKey('kind')) { kind = ExecutableKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } return ExecutableFile(file, kind); } else { throw jsonDecoder.mismatch(jsonPath, 'ExecutableFile', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutableFile) { return file == other.file && kind == other.kind; } return false; } @override int get hashCode => Object.hash( file, kind, ); } /// ExecutableKind /// /// enum { /// CLIENT /// EITHER /// NOT_EXECUTABLE /// SERVER /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutableKind implements Enum { static const ExecutableKind CLIENT = ExecutableKind._('CLIENT'); static const ExecutableKind EITHER = ExecutableKind._('EITHER'); static const ExecutableKind NOT_EXECUTABLE = ExecutableKind._('NOT_EXECUTABLE'); static const ExecutableKind SERVER = ExecutableKind._('SERVER'); /// A list containing all of the enum values that are defined. static const List VALUES = [ CLIENT, EITHER, NOT_EXECUTABLE, SERVER ]; @override final String name; const ExecutableKind._(this.name); factory ExecutableKind(String name) { switch (name) { case 'CLIENT': return CLIENT; case 'EITHER': return EITHER; case 'NOT_EXECUTABLE': return NOT_EXECUTABLE; case 'SERVER': return SERVER; } throw Exception('Illegal enum value: $name'); } factory ExecutableKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return ExecutableKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'ExecutableKind', json); } @override String toString() => 'ExecutableKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// execution.createContext params /// /// { /// "contextRoot": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionCreateContextParams implements RequestParams { /// The path of the Dart or HTML file that will be launched, or the path of /// the directory containing the file. String contextRoot; ExecutionCreateContextParams(this.contextRoot); factory ExecutionCreateContextParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String contextRoot; if (json.containsKey('contextRoot')) { contextRoot = clientUriConverter?.fromClientFilePath(jsonDecoder .decodeString('$jsonPath.contextRoot', json['contextRoot'])) ?? jsonDecoder.decodeString( '$jsonPath.contextRoot', json['contextRoot']); } else { throw jsonDecoder.mismatch(jsonPath, 'contextRoot'); } return ExecutionCreateContextParams(contextRoot); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.createContext params', json); } } factory ExecutionCreateContextParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ExecutionCreateContextParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['contextRoot'] = clientUriConverter?.toClientFilePath(contextRoot) ?? contextRoot; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'execution.createContext', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionCreateContextParams) { return contextRoot == other.contextRoot; } return false; } @override int get hashCode => contextRoot.hashCode; } /// execution.createContext result /// /// { /// "id": ExecutionContextId /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionCreateContextResult implements ResponseResult { /// The identifier used to refer to the execution context that was created. String id; ExecutionCreateContextResult(this.id); factory ExecutionCreateContextResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return ExecutionCreateContextResult(id); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.createContext result', json); } } factory ExecutionCreateContextResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return ExecutionCreateContextResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionCreateContextResult) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// execution.deleteContext params /// /// { /// "id": ExecutionContextId /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionDeleteContextParams implements RequestParams { /// The identifier of the execution context that is to be deleted. String id; ExecutionDeleteContextParams(this.id); factory ExecutionDeleteContextParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return ExecutionDeleteContextParams(id); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.deleteContext params', json); } } factory ExecutionDeleteContextParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ExecutionDeleteContextParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'execution.deleteContext', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionDeleteContextParams) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// execution.deleteContext result /// /// Clients may not extend, implement or mix-in this class. class ExecutionDeleteContextResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ExecutionDeleteContextResult; @override int get hashCode => 479954425; } /// execution.getSuggestions params /// /// { /// "code": String /// "offset": int /// "contextFile": FilePath /// "contextOffset": int /// "variables": List /// "expressions": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionGetSuggestionsParams implements RequestParams { /// The code to get suggestions in. String code; /// The offset within the code to get suggestions at. int offset; /// The path of the context file, e.g. the file of the current debugger /// frame. The combination of the context file and context offset can be used /// to ensure that all variables of the context are available for completion /// (with their static types). String contextFile; /// The offset in the context file, e.g. the line offset in the current /// debugger frame. int contextOffset; /// The runtime context variables that are potentially referenced in the /// code. List variables; /// The list of sub-expressions in the code for which the client wants to /// provide runtime types. It does not have to be the full list of /// expressions requested by the server, for missing expressions their static /// types will be used. /// /// When this field is omitted, the server will return completion suggestions /// only when there are no interesting sub-expressions in the given code. The /// client may provide an empty list, in this case the server will return /// completion suggestions. List? expressions; ExecutionGetSuggestionsParams(this.code, this.offset, this.contextFile, this.contextOffset, this.variables, {this.expressions}); factory ExecutionGetSuggestionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String code; if (json.containsKey('code')) { code = jsonDecoder.decodeString('$jsonPath.code', json['code']); } else { throw jsonDecoder.mismatch(jsonPath, 'code'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } String contextFile; if (json.containsKey('contextFile')) { contextFile = clientUriConverter?.fromClientFilePath(jsonDecoder .decodeString('$jsonPath.contextFile', json['contextFile'])) ?? jsonDecoder.decodeString( '$jsonPath.contextFile', json['contextFile']); } else { throw jsonDecoder.mismatch(jsonPath, 'contextFile'); } int contextOffset; if (json.containsKey('contextOffset')) { contextOffset = jsonDecoder.decodeInt( '$jsonPath.contextOffset', json['contextOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'contextOffset'); } List variables; if (json.containsKey('variables')) { variables = jsonDecoder.decodeList( '$jsonPath.variables', json['variables'], (String jsonPath, Object? json) => RuntimeCompletionVariable.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'variables'); } List? expressions; if (json.containsKey('expressions')) { expressions = jsonDecoder.decodeList( '$jsonPath.expressions', json['expressions'], (String jsonPath, Object? json) => RuntimeCompletionExpression.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return ExecutionGetSuggestionsParams( code, offset, contextFile, contextOffset, variables, expressions: expressions); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.getSuggestions params', json); } } factory ExecutionGetSuggestionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ExecutionGetSuggestionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['code'] = code; result['offset'] = offset; result['contextFile'] = clientUriConverter?.toClientFilePath(contextFile) ?? contextFile; result['contextOffset'] = contextOffset; result['variables'] = variables .map((RuntimeCompletionVariable value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); var expressions = this.expressions; if (expressions != null) { result['expressions'] = expressions .map((RuntimeCompletionExpression value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'execution.getSuggestions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionGetSuggestionsParams) { return code == other.code && offset == other.offset && contextFile == other.contextFile && contextOffset == other.contextOffset && listEqual( variables, other.variables, (RuntimeCompletionVariable a, RuntimeCompletionVariable b) => a == b) && listEqual( expressions, other.expressions, (RuntimeCompletionExpression a, RuntimeCompletionExpression b) => a == b); } return false; } @override int get hashCode => Object.hash( code, offset, contextFile, contextOffset, Object.hashAll(variables), Object.hashAll(expressions ?? []), ); } /// execution.getSuggestions result /// /// { /// "suggestions": optional List /// "expressions": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionGetSuggestionsResult implements ResponseResult { /// The completion suggestions. In contrast to usual completion request, /// suggestions for private elements also will be provided. /// /// If there are sub-expressions that can have different runtime types, and /// are considered to be safe to evaluate at runtime (e.g. getters), so using /// their actual runtime types can improve completion results, the server /// omits this field in the response, and instead will return the /// "expressions" field. List? suggestions; /// The list of sub-expressions in the code for which the server would like /// to know runtime types to provide better completion suggestions. /// /// This field is omitted the field "suggestions" is returned. List? expressions; ExecutionGetSuggestionsResult({this.suggestions, this.expressions}); factory ExecutionGetSuggestionsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List? suggestions; if (json.containsKey('suggestions')) { suggestions = jsonDecoder.decodeList( '$jsonPath.suggestions', json['suggestions'], (String jsonPath, Object? json) => CompletionSuggestion.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } List? expressions; if (json.containsKey('expressions')) { expressions = jsonDecoder.decodeList( '$jsonPath.expressions', json['expressions'], (String jsonPath, Object? json) => RuntimeCompletionExpression.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return ExecutionGetSuggestionsResult( suggestions: suggestions, expressions: expressions); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.getSuggestions result', json); } } factory ExecutionGetSuggestionsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return ExecutionGetSuggestionsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var suggestions = this.suggestions; if (suggestions != null) { result['suggestions'] = suggestions .map((CompletionSuggestion value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } var expressions = this.expressions; if (expressions != null) { result['expressions'] = expressions .map((RuntimeCompletionExpression value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionGetSuggestionsResult) { return listEqual(suggestions, other.suggestions, (CompletionSuggestion a, CompletionSuggestion b) => a == b) && listEqual( expressions, other.expressions, (RuntimeCompletionExpression a, RuntimeCompletionExpression b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(suggestions ?? []), Object.hashAll(expressions ?? []), ); } /// execution.launchData params /// /// { /// "file": FilePath /// "kind": optional ExecutableKind /// "referencedFiles": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionLaunchDataParams implements HasToJson { /// The file for which launch data is being provided. This will either be a /// Dart library or an HTML file. String file; /// The kind of the executable file. This field is omitted if the file is not /// a Dart file. ExecutableKind? kind; /// A list of the Dart files that are referenced by the file. This field is /// omitted if the file is not an HTML file. List? referencedFiles; ExecutionLaunchDataParams(this.file, {this.kind, this.referencedFiles}); factory ExecutionLaunchDataParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } ExecutableKind? kind; if (json.containsKey('kind')) { kind = ExecutableKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } List? referencedFiles; if (json.containsKey('referencedFiles')) { referencedFiles = jsonDecoder.decodeList( '$jsonPath.referencedFiles', json['referencedFiles'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } return ExecutionLaunchDataParams(file, kind: kind, referencedFiles: referencedFiles); } else { throw jsonDecoder.mismatch(jsonPath, 'execution.launchData params', json); } } factory ExecutionLaunchDataParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return ExecutionLaunchDataParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; var kind = this.kind; if (kind != null) { result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); } var referencedFiles = this.referencedFiles; if (referencedFiles != null) { result['referencedFiles'] = referencedFiles .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); } return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'execution.launchData', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionLaunchDataParams) { return file == other.file && kind == other.kind && listEqual(referencedFiles, other.referencedFiles, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( file, kind, Object.hashAll(referencedFiles ?? []), ); } /// execution.mapUri params /// /// { /// "id": ExecutionContextId /// "file": optional FilePath /// "uri": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionMapUriParams implements RequestParams { /// The identifier of the execution context in which the URI is to be mapped. String id; /// The path of the file to be mapped into a URI. String? file; /// The URI to be mapped into a file path. String? uri; ExecutionMapUriParams(this.id, {this.file, this.uri}); factory ExecutionMapUriParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } String? file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } String? uri; if (json.containsKey('uri')) { uri = jsonDecoder.decodeString('$jsonPath.uri', json['uri']); } return ExecutionMapUriParams(id, file: file, uri: uri); } else { throw jsonDecoder.mismatch(jsonPath, 'execution.mapUri params', json); } } factory ExecutionMapUriParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ExecutionMapUriParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; var file = this.file; if (file != null) { result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; } var uri = this.uri; if (uri != null) { result['uri'] = uri; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'execution.mapUri', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionMapUriParams) { return id == other.id && file == other.file && uri == other.uri; } return false; } @override int get hashCode => Object.hash( id, file, uri, ); } /// execution.mapUri result /// /// { /// "file": optional FilePath /// "uri": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionMapUriResult implements ResponseResult { /// The file to which the URI was mapped. This field is omitted if the uri /// field was not given in the request. String? file; /// The URI to which the file path was mapped. This field is omitted if the /// file field was not given in the request. String? uri; ExecutionMapUriResult({this.file, this.uri}); factory ExecutionMapUriResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } String? uri; if (json.containsKey('uri')) { uri = jsonDecoder.decodeString('$jsonPath.uri', json['uri']); } return ExecutionMapUriResult(file: file, uri: uri); } else { throw jsonDecoder.mismatch(jsonPath, 'execution.mapUri result', json); } } factory ExecutionMapUriResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return ExecutionMapUriResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var file = this.file; if (file != null) { result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; } var uri = this.uri; if (uri != null) { result['uri'] = uri; } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionMapUriResult) { return file == other.file && uri == other.uri; } return false; } @override int get hashCode => Object.hash( file, uri, ); } /// ExecutionService /// /// enum { /// LAUNCH_DATA /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionService implements Enum { static const ExecutionService LAUNCH_DATA = ExecutionService._('LAUNCH_DATA'); /// A list containing all of the enum values that are defined. static const List VALUES = [LAUNCH_DATA]; @override final String name; const ExecutionService._(this.name); factory ExecutionService(String name) { switch (name) { case 'LAUNCH_DATA': return LAUNCH_DATA; } throw Exception('Illegal enum value: $name'); } factory ExecutionService.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return ExecutionService(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'ExecutionService', json); } @override String toString() => 'ExecutionService.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// execution.setSubscriptions params /// /// { /// "subscriptions": List /// } /// /// Clients may not extend, implement or mix-in this class. class ExecutionSetSubscriptionsParams implements RequestParams { /// A list of the services being subscribed to. List subscriptions; ExecutionSetSubscriptionsParams(this.subscriptions); factory ExecutionSetSubscriptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List subscriptions; if (json.containsKey('subscriptions')) { subscriptions = jsonDecoder.decodeList( '$jsonPath.subscriptions', json['subscriptions'], (String jsonPath, Object? json) => ExecutionService.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'subscriptions'); } return ExecutionSetSubscriptionsParams(subscriptions); } else { throw jsonDecoder.mismatch( jsonPath, 'execution.setSubscriptions params', json); } } factory ExecutionSetSubscriptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ExecutionSetSubscriptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['subscriptions'] = subscriptions .map((ExecutionService value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'execution.setSubscriptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExecutionSetSubscriptionsParams) { return listEqual(subscriptions, other.subscriptions, (ExecutionService a, ExecutionService b) => a == b); } return false; } @override int get hashCode => Object.hashAll(subscriptions); } /// execution.setSubscriptions result /// /// Clients may not extend, implement or mix-in this class. class ExecutionSetSubscriptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ExecutionSetSubscriptionsResult; @override int get hashCode => 287678780; } /// ExistingImport /// /// { /// "uri": int /// "elements": List /// } /// /// Clients may not extend, implement or mix-in this class. class ExistingImport implements HasToJson { /// The URI of the imported library. It is an index in the strings field, in /// the enclosing ExistingImports and its ImportedElementSet object. int uri; /// The list of indexes of elements, in the enclosing ExistingImports object. List elements; ExistingImport(this.uri, this.elements); factory ExistingImport.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int uri; if (json.containsKey('uri')) { uri = jsonDecoder.decodeInt('$jsonPath.uri', json['uri']); } else { throw jsonDecoder.mismatch(jsonPath, 'uri'); } List elements; if (json.containsKey('elements')) { elements = jsonDecoder.decodeList( '$jsonPath.elements', json['elements'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'elements'); } return ExistingImport(uri, elements); } else { throw jsonDecoder.mismatch(jsonPath, 'ExistingImport', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['uri'] = uri; result['elements'] = elements; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExistingImport) { return uri == other.uri && listEqual(elements, other.elements, (int a, int b) => a == b); } return false; } @override int get hashCode => Object.hash( uri, Object.hashAll(elements), ); } /// ExistingImports /// /// { /// "elements": ImportedElementSet /// "imports": List /// } /// /// Clients may not extend, implement or mix-in this class. class ExistingImports implements HasToJson { /// The set of all unique imported elements for all imports. ImportedElementSet elements; /// The list of imports in the library. List imports; ExistingImports(this.elements, this.imports); factory ExistingImports.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { ImportedElementSet elements; if (json.containsKey('elements')) { elements = ImportedElementSet.fromJson( jsonDecoder, '$jsonPath.elements', json['elements'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'elements'); } List imports; if (json.containsKey('imports')) { imports = jsonDecoder.decodeList( '$jsonPath.imports', json['imports'], (String jsonPath, Object? json) => ExistingImport.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'imports'); } return ExistingImports(elements, imports); } else { throw jsonDecoder.mismatch(jsonPath, 'ExistingImports', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['elements'] = elements.toJson(clientUriConverter: clientUriConverter); result['imports'] = imports .map((ExistingImport value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExistingImports) { return elements == other.elements && listEqual(imports, other.imports, (ExistingImport a, ExistingImport b) => a == b); } return false; } @override int get hashCode => Object.hash( elements, Object.hashAll(imports), ); } /// extractLocalVariable feedback /// /// { /// "coveringExpressionOffsets": optional List /// "coveringExpressionLengths": optional List /// "names": List /// "offsets": List /// "lengths": List /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractLocalVariableFeedback extends RefactoringFeedback { /// The offsets of the expressions that cover the specified selection, from /// the down most to the up most. List? coveringExpressionOffsets; /// The lengths of the expressions that cover the specified selection, from /// the down most to the up most. List? coveringExpressionLengths; /// The proposed names for the local variable. List names; /// The offsets of the expressions that would be replaced by a reference to /// the variable. List offsets; /// The lengths of the expressions that would be replaced by a reference to /// the variable. The lengths correspond to the offsets. In other words, for /// a given expression, if the offset of that expression is offsets[i], then /// the length of that expression is lengths[i]. List lengths; ExtractLocalVariableFeedback(this.names, this.offsets, this.lengths, {this.coveringExpressionOffsets, this.coveringExpressionLengths}); factory ExtractLocalVariableFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List? coveringExpressionOffsets; if (json.containsKey('coveringExpressionOffsets')) { coveringExpressionOffsets = jsonDecoder.decodeList( '$jsonPath.coveringExpressionOffsets', json['coveringExpressionOffsets'], jsonDecoder.decodeInt); } List? coveringExpressionLengths; if (json.containsKey('coveringExpressionLengths')) { coveringExpressionLengths = jsonDecoder.decodeList( '$jsonPath.coveringExpressionLengths', json['coveringExpressionLengths'], jsonDecoder.decodeInt); } List names; if (json.containsKey('names')) { names = jsonDecoder.decodeList( '$jsonPath.names', json['names'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'names'); } List offsets; if (json.containsKey('offsets')) { offsets = jsonDecoder.decodeList( '$jsonPath.offsets', json['offsets'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'offsets'); } List lengths; if (json.containsKey('lengths')) { lengths = jsonDecoder.decodeList( '$jsonPath.lengths', json['lengths'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'lengths'); } return ExtractLocalVariableFeedback(names, offsets, lengths, coveringExpressionOffsets: coveringExpressionOffsets, coveringExpressionLengths: coveringExpressionLengths); } else { throw jsonDecoder.mismatch( jsonPath, 'extractLocalVariable feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var coveringExpressionOffsets = this.coveringExpressionOffsets; if (coveringExpressionOffsets != null) { result['coveringExpressionOffsets'] = coveringExpressionOffsets; } var coveringExpressionLengths = this.coveringExpressionLengths; if (coveringExpressionLengths != null) { result['coveringExpressionLengths'] = coveringExpressionLengths; } result['names'] = names; result['offsets'] = offsets; result['lengths'] = lengths; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractLocalVariableFeedback) { return listEqual(coveringExpressionOffsets, other.coveringExpressionOffsets, (int a, int b) => a == b) && listEqual(coveringExpressionLengths, other.coveringExpressionLengths, (int a, int b) => a == b) && listEqual(names, other.names, (String a, String b) => a == b) && listEqual(offsets, other.offsets, (int a, int b) => a == b) && listEqual(lengths, other.lengths, (int a, int b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(coveringExpressionOffsets ?? []), Object.hashAll(coveringExpressionLengths ?? []), Object.hashAll(names), Object.hashAll(offsets), Object.hashAll(lengths), ); } /// extractLocalVariable options /// /// { /// "name": String /// "extractAll": bool /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractLocalVariableOptions extends RefactoringOptions { /// The name that the local variable should be given. String name; /// True if all occurrences of the expression within the scope in which the /// variable will be defined should be replaced by a reference to the local /// variable. The expression used to initiate the refactoring will always be /// replaced. bool extractAll; ExtractLocalVariableOptions(this.name, this.extractAll); factory ExtractLocalVariableOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } bool extractAll; if (json.containsKey('extractAll')) { extractAll = jsonDecoder.decodeBool('$jsonPath.extractAll', json['extractAll']); } else { throw jsonDecoder.mismatch(jsonPath, 'extractAll'); } return ExtractLocalVariableOptions(name, extractAll); } else { throw jsonDecoder.mismatch( jsonPath, 'extractLocalVariable options', json); } } factory ExtractLocalVariableOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return ExtractLocalVariableOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['extractAll'] = extractAll; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractLocalVariableOptions) { return name == other.name && extractAll == other.extractAll; } return false; } @override int get hashCode => Object.hash( name, extractAll, ); } /// extractMethod feedback /// /// { /// "offset": int /// "length": int /// "returnType": String /// "names": List /// "canCreateGetter": bool /// "parameters": List /// "offsets": List /// "lengths": List /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractMethodFeedback extends RefactoringFeedback { /// The offset to the beginning of the expression or statements that will be /// extracted. int offset; /// The length of the expression or statements that will be extracted. int length; /// The proposed return type for the method. If the returned element does not /// have a declared return type, this field will contain an empty string. String returnType; /// The proposed names for the method. List names; /// True if a getter could be created rather than a method. bool canCreateGetter; /// The proposed parameters for the method. List parameters; /// The offsets of the expressions or statements that would be replaced by an /// invocation of the method. List offsets; /// The lengths of the expressions or statements that would be replaced by an /// invocation of the method. The lengths correspond to the offsets. In other /// words, for a given expression (or block of statements), if the offset of /// that expression is offsets[i], then the length of that expression is /// lengths[i]. List lengths; ExtractMethodFeedback(this.offset, this.length, this.returnType, this.names, this.canCreateGetter, this.parameters, this.offsets, this.lengths); factory ExtractMethodFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } String returnType; if (json.containsKey('returnType')) { returnType = jsonDecoder.decodeString( '$jsonPath.returnType', json['returnType']); } else { throw jsonDecoder.mismatch(jsonPath, 'returnType'); } List names; if (json.containsKey('names')) { names = jsonDecoder.decodeList( '$jsonPath.names', json['names'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'names'); } bool canCreateGetter; if (json.containsKey('canCreateGetter')) { canCreateGetter = jsonDecoder.decodeBool( '$jsonPath.canCreateGetter', json['canCreateGetter']); } else { throw jsonDecoder.mismatch(jsonPath, 'canCreateGetter'); } List parameters; if (json.containsKey('parameters')) { parameters = jsonDecoder.decodeList( '$jsonPath.parameters', json['parameters'], (String jsonPath, Object? json) => RefactoringMethodParameter.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'parameters'); } List offsets; if (json.containsKey('offsets')) { offsets = jsonDecoder.decodeList( '$jsonPath.offsets', json['offsets'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'offsets'); } List lengths; if (json.containsKey('lengths')) { lengths = jsonDecoder.decodeList( '$jsonPath.lengths', json['lengths'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'lengths'); } return ExtractMethodFeedback(offset, length, returnType, names, canCreateGetter, parameters, offsets, lengths); } else { throw jsonDecoder.mismatch(jsonPath, 'extractMethod feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; result['returnType'] = returnType; result['names'] = names; result['canCreateGetter'] = canCreateGetter; result['parameters'] = parameters .map((RefactoringMethodParameter value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['offsets'] = offsets; result['lengths'] = lengths; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractMethodFeedback) { return offset == other.offset && length == other.length && returnType == other.returnType && listEqual(names, other.names, (String a, String b) => a == b) && canCreateGetter == other.canCreateGetter && listEqual( parameters, other.parameters, (RefactoringMethodParameter a, RefactoringMethodParameter b) => a == b) && listEqual(offsets, other.offsets, (int a, int b) => a == b) && listEqual(lengths, other.lengths, (int a, int b) => a == b); } return false; } @override int get hashCode => Object.hash( offset, length, returnType, Object.hashAll(names), canCreateGetter, Object.hashAll(parameters), Object.hashAll(offsets), Object.hashAll(lengths), ); } /// extractMethod options /// /// { /// "returnType": String /// "createGetter": bool /// "name": String /// "parameters": List /// "extractAll": bool /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractMethodOptions extends RefactoringOptions { /// The return type that should be defined for the method. String returnType; /// True if a getter should be created rather than a method. It is an error /// if this field is true and the list of parameters is non-empty. bool createGetter; /// The name that the method should be given. String name; /// The parameters that should be defined for the method. /// /// It is an error if a REQUIRED or NAMED parameter follows a POSITIONAL /// parameter. It is an error if a REQUIRED or POSITIONAL parameter follows a /// NAMED parameter. /// /// - To change the order and/or update proposed parameters, add parameters /// with the same identifiers as proposed. /// - To add new parameters, omit their identifier. /// - To remove some parameters, omit them in this list. List parameters; /// True if all occurrences of the expression or statements should be /// replaced by an invocation of the method. The expression or statements /// used to initiate the refactoring will always be replaced. bool extractAll; ExtractMethodOptions(this.returnType, this.createGetter, this.name, this.parameters, this.extractAll); factory ExtractMethodOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String returnType; if (json.containsKey('returnType')) { returnType = jsonDecoder.decodeString( '$jsonPath.returnType', json['returnType']); } else { throw jsonDecoder.mismatch(jsonPath, 'returnType'); } bool createGetter; if (json.containsKey('createGetter')) { createGetter = jsonDecoder.decodeBool( '$jsonPath.createGetter', json['createGetter']); } else { throw jsonDecoder.mismatch(jsonPath, 'createGetter'); } String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } List parameters; if (json.containsKey('parameters')) { parameters = jsonDecoder.decodeList( '$jsonPath.parameters', json['parameters'], (String jsonPath, Object? json) => RefactoringMethodParameter.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'parameters'); } bool extractAll; if (json.containsKey('extractAll')) { extractAll = jsonDecoder.decodeBool('$jsonPath.extractAll', json['extractAll']); } else { throw jsonDecoder.mismatch(jsonPath, 'extractAll'); } return ExtractMethodOptions( returnType, createGetter, name, parameters, extractAll); } else { throw jsonDecoder.mismatch(jsonPath, 'extractMethod options', json); } } factory ExtractMethodOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return ExtractMethodOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['returnType'] = returnType; result['createGetter'] = createGetter; result['name'] = name; result['parameters'] = parameters .map((RefactoringMethodParameter value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['extractAll'] = extractAll; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractMethodOptions) { return returnType == other.returnType && createGetter == other.createGetter && name == other.name && listEqual( parameters, other.parameters, (RefactoringMethodParameter a, RefactoringMethodParameter b) => a == b) && extractAll == other.extractAll; } return false; } @override int get hashCode => Object.hash( returnType, createGetter, name, Object.hashAll(parameters), extractAll, ); } /// extractWidget feedback /// /// { /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractWidgetFeedback extends RefactoringFeedback { ExtractWidgetFeedback(); factory ExtractWidgetFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { return ExtractWidgetFeedback(); } else { throw jsonDecoder.mismatch(jsonPath, 'extractWidget feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractWidgetFeedback) { return true; } return false; } @override int get hashCode => 0; } /// extractWidget options /// /// { /// "name": String /// } /// /// Clients may not extend, implement or mix-in this class. class ExtractWidgetOptions extends RefactoringOptions { /// The name that the widget class should be given. String name; ExtractWidgetOptions(this.name); factory ExtractWidgetOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } return ExtractWidgetOptions(name); } else { throw jsonDecoder.mismatch(jsonPath, 'extractWidget options', json); } } factory ExtractWidgetOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return ExtractWidgetOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ExtractWidgetOptions) { return name == other.name; } return false; } @override int get hashCode => name.hashCode; } /// FileKind /// /// enum { /// LIBRARY /// PART /// } /// /// Clients may not extend, implement or mix-in this class. class FileKind implements Enum { static const FileKind LIBRARY = FileKind._('LIBRARY'); static const FileKind PART = FileKind._('PART'); /// A list containing all of the enum values that are defined. static const List VALUES = [LIBRARY, PART]; @override final String name; const FileKind._(this.name); factory FileKind(String name) { switch (name) { case 'LIBRARY': return LIBRARY; case 'PART': return PART; } throw Exception('Illegal enum value: $name'); } factory FileKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return FileKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'FileKind', json); } @override String toString() => 'FileKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// flutter.getWidgetDescription params /// /// { /// "file": FilePath /// "offset": int /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterGetWidgetDescriptionParams implements RequestParams { /// The file where the widget instance is created. String file; /// The offset in the file where the widget instance is created. int offset; FlutterGetWidgetDescriptionParams(this.file, this.offset); factory FlutterGetWidgetDescriptionParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } return FlutterGetWidgetDescriptionParams(file, offset); } else { throw jsonDecoder.mismatch( jsonPath, 'flutter.getWidgetDescription params', json); } } factory FlutterGetWidgetDescriptionParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return FlutterGetWidgetDescriptionParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'flutter.getWidgetDescription', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterGetWidgetDescriptionParams) { return file == other.file && offset == other.offset; } return false; } @override int get hashCode => Object.hash( file, offset, ); } /// flutter.getWidgetDescription result /// /// { /// "properties": List /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterGetWidgetDescriptionResult implements ResponseResult { /// The list of properties of the widget. Some of the properties might be /// read only, when their editor is not set. This might be because they have /// type that we don't know how to edit, or for compound properties that work /// as containers for sub-properties. List properties; FlutterGetWidgetDescriptionResult(this.properties); factory FlutterGetWidgetDescriptionResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List properties; if (json.containsKey('properties')) { properties = jsonDecoder.decodeList( '$jsonPath.properties', json['properties'], (String jsonPath, Object? json) => FlutterWidgetProperty.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'properties'); } return FlutterGetWidgetDescriptionResult(properties); } else { throw jsonDecoder.mismatch( jsonPath, 'flutter.getWidgetDescription result', json); } } factory FlutterGetWidgetDescriptionResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return FlutterGetWidgetDescriptionResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['properties'] = properties .map((FlutterWidgetProperty value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterGetWidgetDescriptionResult) { return listEqual(properties, other.properties, (FlutterWidgetProperty a, FlutterWidgetProperty b) => a == b); } return false; } @override int get hashCode => Object.hashAll(properties); } /// FlutterOutline /// /// { /// "kind": FlutterOutlineKind /// "offset": int /// "length": int /// "codeOffset": int /// "codeLength": int /// "label": optional String /// "dartElement": optional Element /// "attributes": optional List /// "className": optional String /// "parentAssociationLabel": optional String /// "variableName": optional String /// "children": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterOutline implements HasToJson { /// The kind of the node. FlutterOutlineKind kind; /// The offset of the first character of the element. This is different than /// the offset in the Element, which is the offset of the name of the /// element. It can be used, for example, to map locations in the file back /// to an outline. int offset; /// The length of the element. int length; /// The offset of the first character of the element code, which is neither /// documentation, nor annotation. int codeOffset; /// The length of the element code. int codeLength; /// The text label of the node children of the node. It is provided for any /// FlutterOutlineKind.GENERIC node, where better information is not /// available. String? label; /// If this node is a Dart element, the description of it; omitted otherwise. Element? dartElement; /// Additional attributes for this node, which might be interesting to /// display on the client. These attributes are usually arguments for the /// instance creation or the invocation that created the widget. List? attributes; /// If the node creates a new class instance, or a reference to an instance, /// this field has the name of the class. String? className; /// A short text description how this node is associated with the parent /// node. For example "appBar" or "body" in Scaffold. String? parentAssociationLabel; /// If FlutterOutlineKind.VARIABLE, the name of the variable. String? variableName; /// The children of the node. The field will be omitted if the node has no /// children. List? children; FlutterOutline( this.kind, this.offset, this.length, this.codeOffset, this.codeLength, {this.label, this.dartElement, this.attributes, this.className, this.parentAssociationLabel, this.variableName, this.children}); factory FlutterOutline.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { FlutterOutlineKind kind; if (json.containsKey('kind')) { kind = FlutterOutlineKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } int codeOffset; if (json.containsKey('codeOffset')) { codeOffset = jsonDecoder.decodeInt('$jsonPath.codeOffset', json['codeOffset']); } else { throw jsonDecoder.mismatch(jsonPath, 'codeOffset'); } int codeLength; if (json.containsKey('codeLength')) { codeLength = jsonDecoder.decodeInt('$jsonPath.codeLength', json['codeLength']); } else { throw jsonDecoder.mismatch(jsonPath, 'codeLength'); } String? label; if (json.containsKey('label')) { label = jsonDecoder.decodeString('$jsonPath.label', json['label']); } Element? dartElement; if (json.containsKey('dartElement')) { dartElement = Element.fromJson( jsonDecoder, '$jsonPath.dartElement', json['dartElement'], clientUriConverter: clientUriConverter); } List? attributes; if (json.containsKey('attributes')) { attributes = jsonDecoder.decodeList( '$jsonPath.attributes', json['attributes'], (String jsonPath, Object? json) => FlutterOutlineAttribute.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } String? className; if (json.containsKey('className')) { className = jsonDecoder.decodeString('$jsonPath.className', json['className']); } String? parentAssociationLabel; if (json.containsKey('parentAssociationLabel')) { parentAssociationLabel = jsonDecoder.decodeString( '$jsonPath.parentAssociationLabel', json['parentAssociationLabel']); } String? variableName; if (json.containsKey('variableName')) { variableName = jsonDecoder.decodeString( '$jsonPath.variableName', json['variableName']); } List? children; if (json.containsKey('children')) { children = jsonDecoder.decodeList( '$jsonPath.children', json['children'], (String jsonPath, Object? json) => FlutterOutline.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return FlutterOutline(kind, offset, length, codeOffset, codeLength, label: label, dartElement: dartElement, attributes: attributes, className: className, parentAssociationLabel: parentAssociationLabel, variableName: variableName, children: children); } else { throw jsonDecoder.mismatch(jsonPath, 'FlutterOutline', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); result['offset'] = offset; result['length'] = length; result['codeOffset'] = codeOffset; result['codeLength'] = codeLength; var label = this.label; if (label != null) { result['label'] = label; } var dartElement = this.dartElement; if (dartElement != null) { result['dartElement'] = dartElement.toJson(clientUriConverter: clientUriConverter); } var attributes = this.attributes; if (attributes != null) { result['attributes'] = attributes .map((FlutterOutlineAttribute value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } var className = this.className; if (className != null) { result['className'] = className; } var parentAssociationLabel = this.parentAssociationLabel; if (parentAssociationLabel != null) { result['parentAssociationLabel'] = parentAssociationLabel; } var variableName = this.variableName; if (variableName != null) { result['variableName'] = variableName; } var children = this.children; if (children != null) { result['children'] = children .map((FlutterOutline value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterOutline) { return kind == other.kind && offset == other.offset && length == other.length && codeOffset == other.codeOffset && codeLength == other.codeLength && label == other.label && dartElement == other.dartElement && listEqual( attributes, other.attributes, (FlutterOutlineAttribute a, FlutterOutlineAttribute b) => a == b) && className == other.className && parentAssociationLabel == other.parentAssociationLabel && variableName == other.variableName && listEqual(children, other.children, (FlutterOutline a, FlutterOutline b) => a == b); } return false; } @override int get hashCode => Object.hash( kind, offset, length, codeOffset, codeLength, label, dartElement, Object.hashAll(attributes ?? []), className, parentAssociationLabel, variableName, Object.hashAll(children ?? []), ); } /// FlutterOutlineAttribute /// /// { /// "name": String /// "label": String /// "literalValueBoolean": optional bool /// "literalValueInteger": optional int /// "literalValueString": optional String /// "nameLocation": optional Location /// "valueLocation": optional Location /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterOutlineAttribute implements HasToJson { /// The name of the attribute. String name; /// The label of the attribute value, usually the Dart code. It might be /// quite long, the client should abbreviate as needed. String label; /// The boolean literal value of the attribute. This field is absent if the /// value is not a boolean literal. bool? literalValueBoolean; /// The integer literal value of the attribute. This field is absent if the /// value is not an integer literal. int? literalValueInteger; /// The string literal value of the attribute. This field is absent if the /// value is not a string literal. String? literalValueString; /// If the attribute is a named argument, the location of the name, without /// the colon. Location? nameLocation; /// The location of the value. /// /// This field is always available, but marked optional for backward /// compatibility between new clients with older servers. Location? valueLocation; FlutterOutlineAttribute(this.name, this.label, {this.literalValueBoolean, this.literalValueInteger, this.literalValueString, this.nameLocation, this.valueLocation}); factory FlutterOutlineAttribute.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } String label; if (json.containsKey('label')) { label = jsonDecoder.decodeString('$jsonPath.label', json['label']); } else { throw jsonDecoder.mismatch(jsonPath, 'label'); } bool? literalValueBoolean; if (json.containsKey('literalValueBoolean')) { literalValueBoolean = jsonDecoder.decodeBool( '$jsonPath.literalValueBoolean', json['literalValueBoolean']); } int? literalValueInteger; if (json.containsKey('literalValueInteger')) { literalValueInteger = jsonDecoder.decodeInt( '$jsonPath.literalValueInteger', json['literalValueInteger']); } String? literalValueString; if (json.containsKey('literalValueString')) { literalValueString = jsonDecoder.decodeString( '$jsonPath.literalValueString', json['literalValueString']); } Location? nameLocation; if (json.containsKey('nameLocation')) { nameLocation = Location.fromJson( jsonDecoder, '$jsonPath.nameLocation', json['nameLocation'], clientUriConverter: clientUriConverter); } Location? valueLocation; if (json.containsKey('valueLocation')) { valueLocation = Location.fromJson( jsonDecoder, '$jsonPath.valueLocation', json['valueLocation'], clientUriConverter: clientUriConverter); } return FlutterOutlineAttribute(name, label, literalValueBoolean: literalValueBoolean, literalValueInteger: literalValueInteger, literalValueString: literalValueString, nameLocation: nameLocation, valueLocation: valueLocation); } else { throw jsonDecoder.mismatch(jsonPath, 'FlutterOutlineAttribute', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['label'] = label; var literalValueBoolean = this.literalValueBoolean; if (literalValueBoolean != null) { result['literalValueBoolean'] = literalValueBoolean; } var literalValueInteger = this.literalValueInteger; if (literalValueInteger != null) { result['literalValueInteger'] = literalValueInteger; } var literalValueString = this.literalValueString; if (literalValueString != null) { result['literalValueString'] = literalValueString; } var nameLocation = this.nameLocation; if (nameLocation != null) { result['nameLocation'] = nameLocation.toJson(clientUriConverter: clientUriConverter); } var valueLocation = this.valueLocation; if (valueLocation != null) { result['valueLocation'] = valueLocation.toJson(clientUriConverter: clientUriConverter); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterOutlineAttribute) { return name == other.name && label == other.label && literalValueBoolean == other.literalValueBoolean && literalValueInteger == other.literalValueInteger && literalValueString == other.literalValueString && nameLocation == other.nameLocation && valueLocation == other.valueLocation; } return false; } @override int get hashCode => Object.hash( name, label, literalValueBoolean, literalValueInteger, literalValueString, nameLocation, valueLocation, ); } /// FlutterOutlineKind /// /// enum { /// DART_ELEMENT /// GENERIC /// NEW_INSTANCE /// INVOCATION /// VARIABLE /// PLACEHOLDER /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterOutlineKind implements Enum { /// A dart element declaration. static const FlutterOutlineKind DART_ELEMENT = FlutterOutlineKind._('DART_ELEMENT'); /// A generic Flutter element, without additional information. static const FlutterOutlineKind GENERIC = FlutterOutlineKind._('GENERIC'); /// A new instance creation. static const FlutterOutlineKind NEW_INSTANCE = FlutterOutlineKind._('NEW_INSTANCE'); /// An invocation of a method, a top-level function, a function expression, /// etc. static const FlutterOutlineKind INVOCATION = FlutterOutlineKind._('INVOCATION'); /// A reference to a local variable, or a field. static const FlutterOutlineKind VARIABLE = FlutterOutlineKind._('VARIABLE'); /// The parent node has a required Widget. The node works as a placeholder /// child to drop a new Widget to. static const FlutterOutlineKind PLACEHOLDER = FlutterOutlineKind._('PLACEHOLDER'); /// A list containing all of the enum values that are defined. static const List VALUES = [ DART_ELEMENT, GENERIC, NEW_INSTANCE, INVOCATION, VARIABLE, PLACEHOLDER ]; @override final String name; const FlutterOutlineKind._(this.name); factory FlutterOutlineKind(String name) { switch (name) { case 'DART_ELEMENT': return DART_ELEMENT; case 'GENERIC': return GENERIC; case 'NEW_INSTANCE': return NEW_INSTANCE; case 'INVOCATION': return INVOCATION; case 'VARIABLE': return VARIABLE; case 'PLACEHOLDER': return PLACEHOLDER; } throw Exception('Illegal enum value: $name'); } factory FlutterOutlineKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return FlutterOutlineKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'FlutterOutlineKind', json); } @override String toString() => 'FlutterOutlineKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// flutter.outline params /// /// { /// "file": FilePath /// "outline": FlutterOutline /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterOutlineParams implements HasToJson { /// The file with which the outline is associated. String file; /// The outline associated with the file. FlutterOutline outline; FlutterOutlineParams(this.file, this.outline); factory FlutterOutlineParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } FlutterOutline outline; if (json.containsKey('outline')) { outline = FlutterOutline.fromJson( jsonDecoder, '$jsonPath.outline', json['outline'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'outline'); } return FlutterOutlineParams(file, outline); } else { throw jsonDecoder.mismatch(jsonPath, 'flutter.outline params', json); } } factory FlutterOutlineParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return FlutterOutlineParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['outline'] = outline.toJson(clientUriConverter: clientUriConverter); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'flutter.outline', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterOutlineParams) { return file == other.file && outline == other.outline; } return false; } @override int get hashCode => Object.hash( file, outline, ); } /// FlutterService /// /// enum { /// OUTLINE /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterService implements Enum { static const FlutterService OUTLINE = FlutterService._('OUTLINE'); /// A list containing all of the enum values that are defined. static const List VALUES = [OUTLINE]; @override final String name; const FlutterService._(this.name); factory FlutterService(String name) { switch (name) { case 'OUTLINE': return OUTLINE; } throw Exception('Illegal enum value: $name'); } factory FlutterService.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return FlutterService(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'FlutterService', json); } @override String toString() => 'FlutterService.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// flutter.setSubscriptions params /// /// { /// "subscriptions": Map> /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterSetSubscriptionsParams implements RequestParams { /// A table mapping services to a list of the files being subscribed to the /// service. Map> subscriptions; FlutterSetSubscriptionsParams(this.subscriptions); factory FlutterSetSubscriptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Map> subscriptions; if (json.containsKey('subscriptions')) { subscriptions = jsonDecoder.decodeMap( '$jsonPath.subscriptions', json['subscriptions'], keyDecoder: (String jsonPath, Object? json) => FlutterService.fromJson(jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter), valueDecoder: (String jsonPath, Object? json) => jsonDecoder.decodeList( jsonPath, json, (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json))); } else { throw jsonDecoder.mismatch(jsonPath, 'subscriptions'); } return FlutterSetSubscriptionsParams(subscriptions); } else { throw jsonDecoder.mismatch( jsonPath, 'flutter.setSubscriptions params', json); } } factory FlutterSetSubscriptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return FlutterSetSubscriptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['subscriptions'] = mapMap(subscriptions, keyCallback: (FlutterService value) => value.toJson(clientUriConverter: clientUriConverter), valueCallback: (List value) => value .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList()); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'flutter.setSubscriptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterSetSubscriptionsParams) { return mapEqual( subscriptions, other.subscriptions, (List a, List b) => listEqual(a, b, (String a, String b) => a == b)); } return false; } @override int get hashCode => Object.hashAll([...subscriptions.keys, ...subscriptions.values]); } /// flutter.setSubscriptions result /// /// Clients may not extend, implement or mix-in this class. class FlutterSetSubscriptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is FlutterSetSubscriptionsResult; @override int get hashCode => 628296315; } /// flutter.setWidgetPropertyValue params /// /// { /// "id": int /// "value": optional FlutterWidgetPropertyValue /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterSetWidgetPropertyValueParams implements RequestParams { /// The identifier of the property, previously returned as a part of a /// FlutterWidgetProperty. /// /// An error of type FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID is /// generated if the identifier is not valid. int id; /// The new value to set for the property. /// /// If absent, indicates that the property should be removed. If the property /// corresponds to an optional parameter, the corresponding named argument is /// removed. If the property isRequired is true, /// FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED error is generated. /// /// If the expression is not a syntactically valid Dart code, then /// FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION is reported. FlutterWidgetPropertyValue? value; FlutterSetWidgetPropertyValueParams(this.id, {this.value}); factory FlutterSetWidgetPropertyValueParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int id; if (json.containsKey('id')) { id = jsonDecoder.decodeInt('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } FlutterWidgetPropertyValue? value; if (json.containsKey('value')) { value = FlutterWidgetPropertyValue.fromJson( jsonDecoder, '$jsonPath.value', json['value'], clientUriConverter: clientUriConverter); } return FlutterSetWidgetPropertyValueParams(id, value: value); } else { throw jsonDecoder.mismatch( jsonPath, 'flutter.setWidgetPropertyValue params', json); } } factory FlutterSetWidgetPropertyValueParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return FlutterSetWidgetPropertyValueParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; var value = this.value; if (value != null) { result['value'] = value.toJson(clientUriConverter: clientUriConverter); } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'flutter.setWidgetPropertyValue', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterSetWidgetPropertyValueParams) { return id == other.id && value == other.value; } return false; } @override int get hashCode => Object.hash( id, value, ); } /// flutter.setWidgetPropertyValue result /// /// { /// "change": SourceChange /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterSetWidgetPropertyValueResult implements ResponseResult { /// The change that should be applied. SourceChange change; FlutterSetWidgetPropertyValueResult(this.change); factory FlutterSetWidgetPropertyValueResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { SourceChange change; if (json.containsKey('change')) { change = SourceChange.fromJson( jsonDecoder, '$jsonPath.change', json['change'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'change'); } return FlutterSetWidgetPropertyValueResult(change); } else { throw jsonDecoder.mismatch( jsonPath, 'flutter.setWidgetPropertyValue result', json); } } factory FlutterSetWidgetPropertyValueResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return FlutterSetWidgetPropertyValueResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['change'] = change.toJson(clientUriConverter: clientUriConverter); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterSetWidgetPropertyValueResult) { return change == other.change; } return false; } @override int get hashCode => change.hashCode; } /// FlutterWidgetProperty /// /// { /// "documentation": optional String /// "expression": optional String /// "id": int /// "isRequired": bool /// "isSafeToUpdate": bool /// "name": String /// "children": optional List /// "editor": optional FlutterWidgetPropertyEditor /// "value": optional FlutterWidgetPropertyValue /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterWidgetProperty implements HasToJson { /// The documentation of the property to show to the user. Omitted if the /// server does not know the documentation, e.g. because the corresponding /// field is not documented. String? documentation; /// If the value of this property is set, the Dart code of the expression of /// this property. String? expression; /// The unique identifier of the property, must be passed back to the server /// when updating the property value. Identifiers become invalid on any /// source code change. int id; /// True if the property is required, e.g. because it corresponds to a /// required parameter of a constructor. bool isRequired; /// If the property expression is a concrete value (e.g. a literal, or an /// enum constant), then it is safe to replace the expression with another /// concrete value. In this case this field is true. Otherwise, for example /// when the expression is a reference to a field, so that its value is /// provided from outside, this field is false. bool isSafeToUpdate; /// The name of the property to display to the user. String name; /// The list of children properties, if any. For example any property of type /// EdgeInsets will have four children properties of type double - left / top /// / right / bottom. List? children; /// The editor that should be used by the client. This field is omitted if /// the server does not know the editor for this property, for example /// because it does not have one of the supported types. FlutterWidgetPropertyEditor? editor; /// If the expression is set, and the server knows the value of the /// expression, this field is set. FlutterWidgetPropertyValue? value; FlutterWidgetProperty( this.id, this.isRequired, this.isSafeToUpdate, this.name, {this.documentation, this.expression, this.children, this.editor, this.value}); factory FlutterWidgetProperty.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? documentation; if (json.containsKey('documentation')) { documentation = jsonDecoder.decodeString( '$jsonPath.documentation', json['documentation']); } String? expression; if (json.containsKey('expression')) { expression = jsonDecoder.decodeString( '$jsonPath.expression', json['expression']); } int id; if (json.containsKey('id')) { id = jsonDecoder.decodeInt('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } bool isRequired; if (json.containsKey('isRequired')) { isRequired = jsonDecoder.decodeBool('$jsonPath.isRequired', json['isRequired']); } else { throw jsonDecoder.mismatch(jsonPath, 'isRequired'); } bool isSafeToUpdate; if (json.containsKey('isSafeToUpdate')) { isSafeToUpdate = jsonDecoder.decodeBool( '$jsonPath.isSafeToUpdate', json['isSafeToUpdate']); } else { throw jsonDecoder.mismatch(jsonPath, 'isSafeToUpdate'); } String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } List? children; if (json.containsKey('children')) { children = jsonDecoder.decodeList( '$jsonPath.children', json['children'], (String jsonPath, Object? json) => FlutterWidgetProperty.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } FlutterWidgetPropertyEditor? editor; if (json.containsKey('editor')) { editor = FlutterWidgetPropertyEditor.fromJson( jsonDecoder, '$jsonPath.editor', json['editor'], clientUriConverter: clientUriConverter); } FlutterWidgetPropertyValue? value; if (json.containsKey('value')) { value = FlutterWidgetPropertyValue.fromJson( jsonDecoder, '$jsonPath.value', json['value'], clientUriConverter: clientUriConverter); } return FlutterWidgetProperty(id, isRequired, isSafeToUpdate, name, documentation: documentation, expression: expression, children: children, editor: editor, value: value); } else { throw jsonDecoder.mismatch(jsonPath, 'FlutterWidgetProperty', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var documentation = this.documentation; if (documentation != null) { result['documentation'] = documentation; } var expression = this.expression; if (expression != null) { result['expression'] = expression; } result['id'] = id; result['isRequired'] = isRequired; result['isSafeToUpdate'] = isSafeToUpdate; result['name'] = name; var children = this.children; if (children != null) { result['children'] = children .map((FlutterWidgetProperty value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } var editor = this.editor; if (editor != null) { result['editor'] = editor.toJson(clientUriConverter: clientUriConverter); } var value = this.value; if (value != null) { result['value'] = value.toJson(clientUriConverter: clientUriConverter); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterWidgetProperty) { return documentation == other.documentation && expression == other.expression && id == other.id && isRequired == other.isRequired && isSafeToUpdate == other.isSafeToUpdate && name == other.name && listEqual(children, other.children, (FlutterWidgetProperty a, FlutterWidgetProperty b) => a == b) && editor == other.editor && value == other.value; } return false; } @override int get hashCode => Object.hash( documentation, expression, id, isRequired, isSafeToUpdate, name, Object.hashAll(children ?? []), editor, value, ); } /// FlutterWidgetPropertyEditor /// /// { /// "kind": FlutterWidgetPropertyEditorKind /// "enumItems": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterWidgetPropertyEditor implements HasToJson { FlutterWidgetPropertyEditorKind kind; List? enumItems; FlutterWidgetPropertyEditor(this.kind, {this.enumItems}); factory FlutterWidgetPropertyEditor.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { FlutterWidgetPropertyEditorKind kind; if (json.containsKey('kind')) { kind = FlutterWidgetPropertyEditorKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } List? enumItems; if (json.containsKey('enumItems')) { enumItems = jsonDecoder.decodeList( '$jsonPath.enumItems', json['enumItems'], (String jsonPath, Object? json) => FlutterWidgetPropertyValueEnumItem.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return FlutterWidgetPropertyEditor(kind, enumItems: enumItems); } else { throw jsonDecoder.mismatch(jsonPath, 'FlutterWidgetPropertyEditor', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); var enumItems = this.enumItems; if (enumItems != null) { result['enumItems'] = enumItems .map((FlutterWidgetPropertyValueEnumItem value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterWidgetPropertyEditor) { return kind == other.kind && listEqual( enumItems, other.enumItems, (FlutterWidgetPropertyValueEnumItem a, FlutterWidgetPropertyValueEnumItem b) => a == b); } return false; } @override int get hashCode => Object.hash( kind, Object.hashAll(enumItems ?? []), ); } /// FlutterWidgetPropertyEditorKind /// /// enum { /// BOOL /// DOUBLE /// ENUM /// ENUM_LIKE /// INT /// STRING /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterWidgetPropertyEditorKind implements Enum { /// The editor for a property of type bool. static const FlutterWidgetPropertyEditorKind BOOL = FlutterWidgetPropertyEditorKind._('BOOL'); /// The editor for a property of the type double. static const FlutterWidgetPropertyEditorKind DOUBLE = FlutterWidgetPropertyEditorKind._('DOUBLE'); /// The editor for choosing an item of an enumeration, see the enumItems /// field of FlutterWidgetPropertyEditor. static const FlutterWidgetPropertyEditorKind ENUM = FlutterWidgetPropertyEditorKind._('ENUM'); /// The editor for either choosing a pre-defined item from a list of provided /// static field references (like ENUM), or specifying a free-form /// expression. static const FlutterWidgetPropertyEditorKind ENUM_LIKE = FlutterWidgetPropertyEditorKind._('ENUM_LIKE'); /// The editor for a property of type int. static const FlutterWidgetPropertyEditorKind INT = FlutterWidgetPropertyEditorKind._('INT'); /// The editor for a property of the type String. static const FlutterWidgetPropertyEditorKind STRING = FlutterWidgetPropertyEditorKind._('STRING'); /// A list containing all of the enum values that are defined. static const List VALUES = [ BOOL, DOUBLE, ENUM, ENUM_LIKE, INT, STRING ]; @override final String name; const FlutterWidgetPropertyEditorKind._(this.name); factory FlutterWidgetPropertyEditorKind(String name) { switch (name) { case 'BOOL': return BOOL; case 'DOUBLE': return DOUBLE; case 'ENUM': return ENUM; case 'ENUM_LIKE': return ENUM_LIKE; case 'INT': return INT; case 'STRING': return STRING; } throw Exception('Illegal enum value: $name'); } factory FlutterWidgetPropertyEditorKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return FlutterWidgetPropertyEditorKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch( jsonPath, 'FlutterWidgetPropertyEditorKind', json); } @override String toString() => 'FlutterWidgetPropertyEditorKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// FlutterWidgetPropertyValue /// /// { /// "boolValue": optional bool /// "doubleValue": optional double /// "intValue": optional int /// "stringValue": optional String /// "enumValue": optional FlutterWidgetPropertyValueEnumItem /// "expression": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterWidgetPropertyValue implements HasToJson { bool? boolValue; double? doubleValue; int? intValue; String? stringValue; FlutterWidgetPropertyValueEnumItem? enumValue; /// A free-form expression, which will be used as the value as is. String? expression; FlutterWidgetPropertyValue( {this.boolValue, this.doubleValue, this.intValue, this.stringValue, this.enumValue, this.expression}); factory FlutterWidgetPropertyValue.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool? boolValue; if (json.containsKey('boolValue')) { boolValue = jsonDecoder.decodeBool('$jsonPath.boolValue', json['boolValue']); } double? doubleValue; if (json.containsKey('doubleValue')) { doubleValue = jsonDecoder.decodeDouble( '$jsonPath.doubleValue', json['doubleValue'] as Object); } int? intValue; if (json.containsKey('intValue')) { intValue = jsonDecoder.decodeInt('$jsonPath.intValue', json['intValue']); } String? stringValue; if (json.containsKey('stringValue')) { stringValue = jsonDecoder.decodeString( '$jsonPath.stringValue', json['stringValue']); } FlutterWidgetPropertyValueEnumItem? enumValue; if (json.containsKey('enumValue')) { enumValue = FlutterWidgetPropertyValueEnumItem.fromJson( jsonDecoder, '$jsonPath.enumValue', json['enumValue'], clientUriConverter: clientUriConverter); } String? expression; if (json.containsKey('expression')) { expression = jsonDecoder.decodeString( '$jsonPath.expression', json['expression']); } return FlutterWidgetPropertyValue( boolValue: boolValue, doubleValue: doubleValue, intValue: intValue, stringValue: stringValue, enumValue: enumValue, expression: expression); } else { throw jsonDecoder.mismatch(jsonPath, 'FlutterWidgetPropertyValue', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var boolValue = this.boolValue; if (boolValue != null) { result['boolValue'] = boolValue; } var doubleValue = this.doubleValue; if (doubleValue != null) { result['doubleValue'] = doubleValue; } var intValue = this.intValue; if (intValue != null) { result['intValue'] = intValue; } var stringValue = this.stringValue; if (stringValue != null) { result['stringValue'] = stringValue; } var enumValue = this.enumValue; if (enumValue != null) { result['enumValue'] = enumValue.toJson(clientUriConverter: clientUriConverter); } var expression = this.expression; if (expression != null) { result['expression'] = expression; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterWidgetPropertyValue) { return boolValue == other.boolValue && doubleValue == other.doubleValue && intValue == other.intValue && stringValue == other.stringValue && enumValue == other.enumValue && expression == other.expression; } return false; } @override int get hashCode => Object.hash( boolValue, doubleValue, intValue, stringValue, enumValue, expression, ); } /// FlutterWidgetPropertyValueEnumItem /// /// { /// "libraryUri": String /// "className": String /// "name": String /// "documentation": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class FlutterWidgetPropertyValueEnumItem implements HasToJson { /// The URI of the library containing the className. When the enum item is /// passed back, this will allow the server to import the corresponding /// library if necessary. String libraryUri; /// The name of the class or enum. String className; /// The name of the field in the enumeration, or the static field in the /// class. String name; /// The documentation to show to the user. Omitted if the server does not /// know the documentation, e.g. because the corresponding field is not /// documented. String? documentation; FlutterWidgetPropertyValueEnumItem(this.libraryUri, this.className, this.name, {this.documentation}); factory FlutterWidgetPropertyValueEnumItem.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String libraryUri; if (json.containsKey('libraryUri')) { libraryUri = jsonDecoder.decodeString( '$jsonPath.libraryUri', json['libraryUri']); } else { throw jsonDecoder.mismatch(jsonPath, 'libraryUri'); } String className; if (json.containsKey('className')) { className = jsonDecoder.decodeString('$jsonPath.className', json['className']); } else { throw jsonDecoder.mismatch(jsonPath, 'className'); } String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } String? documentation; if (json.containsKey('documentation')) { documentation = jsonDecoder.decodeString( '$jsonPath.documentation', json['documentation']); } return FlutterWidgetPropertyValueEnumItem(libraryUri, className, name, documentation: documentation); } else { throw jsonDecoder.mismatch( jsonPath, 'FlutterWidgetPropertyValueEnumItem', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['libraryUri'] = libraryUri; result['className'] = className; result['name'] = name; var documentation = this.documentation; if (documentation != null) { result['documentation'] = documentation; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is FlutterWidgetPropertyValueEnumItem) { return libraryUri == other.libraryUri && className == other.className && name == other.name && documentation == other.documentation; } return false; } @override int get hashCode => Object.hash( libraryUri, className, name, documentation, ); } /// GeneralAnalysisService /// /// enum { /// ANALYZED_FILES /// } /// /// Clients may not extend, implement or mix-in this class. class GeneralAnalysisService implements Enum { static const GeneralAnalysisService ANALYZED_FILES = GeneralAnalysisService._('ANALYZED_FILES'); /// A list containing all of the enum values that are defined. static const List VALUES = [ ANALYZED_FILES ]; @override final String name; const GeneralAnalysisService._(this.name); factory GeneralAnalysisService(String name) { switch (name) { case 'ANALYZED_FILES': return ANALYZED_FILES; } throw Exception('Illegal enum value: $name'); } factory GeneralAnalysisService.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return GeneralAnalysisService(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'GeneralAnalysisService', json); } @override String toString() => 'GeneralAnalysisService.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// HoverInformation /// /// { /// "offset": int /// "length": int /// "containingLibraryPath": optional String /// "containingLibraryName": optional String /// "containingClassDescription": optional String /// "dartdoc": optional String /// "elementDescription": optional String /// "elementKind": optional String /// "isDeprecated": optional bool /// "parameter": optional String /// "propagatedType": optional String /// "staticType": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class HoverInformation implements HasToJson { /// The offset of the range of characters that encompasses the cursor /// position and has the same hover information as the cursor position. int offset; /// The length of the range of characters that encompasses the cursor /// position and has the same hover information as the cursor position. int length; /// The path to the defining compilation unit of the library in which the /// referenced element is declared. This data is omitted if there is no /// referenced element, or if the element is declared inside an HTML file. String? containingLibraryPath; /// The URI of the containing library, examples here include "dart:core", /// "package:.." and file uris represented by the path on disk, "/..". The /// data is omitted if the element is declared inside an HTML file. String? containingLibraryName; /// A human-readable description of the class declaring the element being /// referenced. This data is omitted if there is no referenced element, or if /// the element is not a class member. String? containingClassDescription; /// The dartdoc associated with the referenced element. Other than the /// removal of the comment delimiters, including leading asterisks in the /// case of a block comment, the dartdoc is unprocessed markdown. This data /// is omitted if there is no referenced element, or if the element has no /// dartdoc. String? dartdoc; /// A human-readable description of the element being referenced. This data /// is omitted if there is no referenced element. String? elementDescription; /// A human-readable description of the kind of element being referenced /// (such as "class" or "function type alias"). This data is omitted if there /// is no referenced element. String? elementKind; /// True if the referenced element is deprecated. bool? isDeprecated; /// A human-readable description of the parameter corresponding to the /// expression being hovered over. This data is omitted if the location is /// not in an argument to a function. String? parameter; /// The name of the propagated type of the expression. This data is omitted /// if the location does not correspond to an expression or if there is no /// propagated type information. String? propagatedType; /// The name of the static type of the expression. This data is omitted if /// the location does not correspond to an expression. String? staticType; HoverInformation(this.offset, this.length, {this.containingLibraryPath, this.containingLibraryName, this.containingClassDescription, this.dartdoc, this.elementDescription, this.elementKind, this.isDeprecated, this.parameter, this.propagatedType, this.staticType}); factory HoverInformation.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } String? containingLibraryPath; if (json.containsKey('containingLibraryPath')) { containingLibraryPath = jsonDecoder.decodeString( '$jsonPath.containingLibraryPath', json['containingLibraryPath']); } String? containingLibraryName; if (json.containsKey('containingLibraryName')) { containingLibraryName = jsonDecoder.decodeString( '$jsonPath.containingLibraryName', json['containingLibraryName']); } String? containingClassDescription; if (json.containsKey('containingClassDescription')) { containingClassDescription = jsonDecoder.decodeString( '$jsonPath.containingClassDescription', json['containingClassDescription']); } String? dartdoc; if (json.containsKey('dartdoc')) { dartdoc = jsonDecoder.decodeString('$jsonPath.dartdoc', json['dartdoc']); } String? elementDescription; if (json.containsKey('elementDescription')) { elementDescription = jsonDecoder.decodeString( '$jsonPath.elementDescription', json['elementDescription']); } String? elementKind; if (json.containsKey('elementKind')) { elementKind = jsonDecoder.decodeString( '$jsonPath.elementKind', json['elementKind']); } bool? isDeprecated; if (json.containsKey('isDeprecated')) { isDeprecated = jsonDecoder.decodeBool( '$jsonPath.isDeprecated', json['isDeprecated']); } String? parameter; if (json.containsKey('parameter')) { parameter = jsonDecoder.decodeString('$jsonPath.parameter', json['parameter']); } String? propagatedType; if (json.containsKey('propagatedType')) { propagatedType = jsonDecoder.decodeString( '$jsonPath.propagatedType', json['propagatedType']); } String? staticType; if (json.containsKey('staticType')) { staticType = jsonDecoder.decodeString( '$jsonPath.staticType', json['staticType']); } return HoverInformation(offset, length, containingLibraryPath: containingLibraryPath, containingLibraryName: containingLibraryName, containingClassDescription: containingClassDescription, dartdoc: dartdoc, elementDescription: elementDescription, elementKind: elementKind, isDeprecated: isDeprecated, parameter: parameter, propagatedType: propagatedType, staticType: staticType); } else { throw jsonDecoder.mismatch(jsonPath, 'HoverInformation', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; var containingLibraryPath = this.containingLibraryPath; if (containingLibraryPath != null) { result['containingLibraryPath'] = containingLibraryPath; } var containingLibraryName = this.containingLibraryName; if (containingLibraryName != null) { result['containingLibraryName'] = containingLibraryName; } var containingClassDescription = this.containingClassDescription; if (containingClassDescription != null) { result['containingClassDescription'] = containingClassDescription; } var dartdoc = this.dartdoc; if (dartdoc != null) { result['dartdoc'] = dartdoc; } var elementDescription = this.elementDescription; if (elementDescription != null) { result['elementDescription'] = elementDescription; } var elementKind = this.elementKind; if (elementKind != null) { result['elementKind'] = elementKind; } var isDeprecated = this.isDeprecated; if (isDeprecated != null) { result['isDeprecated'] = isDeprecated; } var parameter = this.parameter; if (parameter != null) { result['parameter'] = parameter; } var propagatedType = this.propagatedType; if (propagatedType != null) { result['propagatedType'] = propagatedType; } var staticType = this.staticType; if (staticType != null) { result['staticType'] = staticType; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is HoverInformation) { return offset == other.offset && length == other.length && containingLibraryPath == other.containingLibraryPath && containingLibraryName == other.containingLibraryName && containingClassDescription == other.containingClassDescription && dartdoc == other.dartdoc && elementDescription == other.elementDescription && elementKind == other.elementKind && isDeprecated == other.isDeprecated && parameter == other.parameter && propagatedType == other.propagatedType && staticType == other.staticType; } return false; } @override int get hashCode => Object.hash( offset, length, containingLibraryPath, containingLibraryName, containingClassDescription, dartdoc, elementDescription, elementKind, isDeprecated, parameter, propagatedType, staticType, ); } /// ImplementedClass /// /// { /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class ImplementedClass implements HasToJson { /// The offset of the name of the implemented class. int offset; /// The length of the name of the implemented class. int length; ImplementedClass(this.offset, this.length); factory ImplementedClass.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return ImplementedClass(offset, length); } else { throw jsonDecoder.mismatch(jsonPath, 'ImplementedClass', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ImplementedClass) { return offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( offset, length, ); } /// ImplementedMember /// /// { /// "offset": int /// "length": int /// } /// /// Clients may not extend, implement or mix-in this class. class ImplementedMember implements HasToJson { /// The offset of the name of the implemented member. int offset; /// The length of the name of the implemented member. int length; ImplementedMember(this.offset, this.length); factory ImplementedMember.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } return ImplementedMember(offset, length); } else { throw jsonDecoder.mismatch(jsonPath, 'ImplementedMember', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ImplementedMember) { return offset == other.offset && length == other.length; } return false; } @override int get hashCode => Object.hash( offset, length, ); } /// ImportedElementSet /// /// { /// "strings": List /// "uris": List /// "names": List /// } /// /// Clients may not extend, implement or mix-in this class. class ImportedElementSet implements HasToJson { /// The list of unique strings in this object. List strings; /// The library URI part of the element. It is an index in the strings field. List uris; /// The name part of a the element. It is an index in the strings field. List names; ImportedElementSet(this.strings, this.uris, this.names); factory ImportedElementSet.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List strings; if (json.containsKey('strings')) { strings = jsonDecoder.decodeList( '$jsonPath.strings', json['strings'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'strings'); } List uris; if (json.containsKey('uris')) { uris = jsonDecoder.decodeList( '$jsonPath.uris', json['uris'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'uris'); } List names; if (json.containsKey('names')) { names = jsonDecoder.decodeList( '$jsonPath.names', json['names'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'names'); } return ImportedElementSet(strings, uris, names); } else { throw jsonDecoder.mismatch(jsonPath, 'ImportedElementSet', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['strings'] = strings; result['uris'] = uris; result['names'] = names; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ImportedElementSet) { return listEqual( strings, other.strings, (String a, String b) => a == b) && listEqual(uris, other.uris, (int a, int b) => a == b) && listEqual(names, other.names, (int a, int b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(strings), Object.hashAll(uris), Object.hashAll(names), ); } /// ImportedElements /// /// { /// "path": FilePath /// "prefix": String /// "elements": List /// } /// /// Clients may not extend, implement or mix-in this class. class ImportedElements implements HasToJson { /// The absolute and normalized path of the file containing the library. String path; /// The prefix that was used when importing the library into the original /// source. String prefix; /// The names of the elements imported from the library. List elements; ImportedElements(this.path, this.prefix, this.elements); factory ImportedElements.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String path; if (json.containsKey('path')) { path = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.path', json['path'])) ?? jsonDecoder.decodeString('$jsonPath.path', json['path']); } else { throw jsonDecoder.mismatch(jsonPath, 'path'); } String prefix; if (json.containsKey('prefix')) { prefix = jsonDecoder.decodeString('$jsonPath.prefix', json['prefix']); } else { throw jsonDecoder.mismatch(jsonPath, 'prefix'); } List elements; if (json.containsKey('elements')) { elements = jsonDecoder.decodeList( '$jsonPath.elements', json['elements'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'elements'); } return ImportedElements(path, prefix, elements); } else { throw jsonDecoder.mismatch(jsonPath, 'ImportedElements', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['path'] = clientUriConverter?.toClientFilePath(path) ?? path; result['prefix'] = prefix; result['elements'] = elements; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ImportedElements) { return path == other.path && prefix == other.prefix && listEqual(elements, other.elements, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( path, prefix, Object.hashAll(elements), ); } /// inlineLocalVariable feedback /// /// { /// "name": String /// "occurrences": int /// } /// /// Clients may not extend, implement or mix-in this class. class InlineLocalVariableFeedback extends RefactoringFeedback { /// The name of the variable being inlined. String name; /// The number of times the variable occurs. int occurrences; InlineLocalVariableFeedback(this.name, this.occurrences); factory InlineLocalVariableFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } int occurrences; if (json.containsKey('occurrences')) { occurrences = jsonDecoder.decodeInt('$jsonPath.occurrences', json['occurrences']); } else { throw jsonDecoder.mismatch(jsonPath, 'occurrences'); } return InlineLocalVariableFeedback(name, occurrences); } else { throw jsonDecoder.mismatch( jsonPath, 'inlineLocalVariable feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['occurrences'] = occurrences; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is InlineLocalVariableFeedback) { return name == other.name && occurrences == other.occurrences; } return false; } @override int get hashCode => Object.hash( name, occurrences, ); } /// inlineLocalVariable options /// /// Clients may not extend, implement or mix-in this class. class InlineLocalVariableOptions extends RefactoringOptions implements HasToJson { @override bool operator ==(other) => other is InlineLocalVariableOptions; @override int get hashCode => 540364977; } /// inlineMethod feedback /// /// { /// "className": optional String /// "methodName": String /// "isDeclaration": bool /// } /// /// Clients may not extend, implement or mix-in this class. class InlineMethodFeedback extends RefactoringFeedback { /// The name of the class enclosing the method being inlined. If not a class /// member is being inlined, this field will be absent. String? className; /// The name of the method (or function) being inlined. String methodName; /// True if the declaration of the method is selected. So all references /// should be inlined. bool isDeclaration; InlineMethodFeedback(this.methodName, this.isDeclaration, {this.className}); factory InlineMethodFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? className; if (json.containsKey('className')) { className = jsonDecoder.decodeString('$jsonPath.className', json['className']); } String methodName; if (json.containsKey('methodName')) { methodName = jsonDecoder.decodeString( '$jsonPath.methodName', json['methodName']); } else { throw jsonDecoder.mismatch(jsonPath, 'methodName'); } bool isDeclaration; if (json.containsKey('isDeclaration')) { isDeclaration = jsonDecoder.decodeBool( '$jsonPath.isDeclaration', json['isDeclaration']); } else { throw jsonDecoder.mismatch(jsonPath, 'isDeclaration'); } return InlineMethodFeedback(methodName, isDeclaration, className: className); } else { throw jsonDecoder.mismatch(jsonPath, 'inlineMethod feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var className = this.className; if (className != null) { result['className'] = className; } result['methodName'] = methodName; result['isDeclaration'] = isDeclaration; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is InlineMethodFeedback) { return className == other.className && methodName == other.methodName && isDeclaration == other.isDeclaration; } return false; } @override int get hashCode => Object.hash( className, methodName, isDeclaration, ); } /// inlineMethod options /// /// { /// "deleteSource": bool /// "inlineAll": bool /// } /// /// Clients may not extend, implement or mix-in this class. class InlineMethodOptions extends RefactoringOptions { /// True if the method being inlined should be removed. It is an error if /// this field is true and inlineAll is false. bool deleteSource; /// True if all invocations of the method should be inlined, or false if only /// the invocation site used to create this refactoring should be inlined. bool inlineAll; InlineMethodOptions(this.deleteSource, this.inlineAll); factory InlineMethodOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool deleteSource; if (json.containsKey('deleteSource')) { deleteSource = jsonDecoder.decodeBool( '$jsonPath.deleteSource', json['deleteSource']); } else { throw jsonDecoder.mismatch(jsonPath, 'deleteSource'); } bool inlineAll; if (json.containsKey('inlineAll')) { inlineAll = jsonDecoder.decodeBool('$jsonPath.inlineAll', json['inlineAll']); } else { throw jsonDecoder.mismatch(jsonPath, 'inlineAll'); } return InlineMethodOptions(deleteSource, inlineAll); } else { throw jsonDecoder.mismatch(jsonPath, 'inlineMethod options', json); } } factory InlineMethodOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return InlineMethodOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['deleteSource'] = deleteSource; result['inlineAll'] = inlineAll; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is InlineMethodOptions) { return deleteSource == other.deleteSource && inlineAll == other.inlineAll; } return false; } @override int get hashCode => Object.hash( deleteSource, inlineAll, ); } /// LibraryPathSet /// /// { /// "scope": FilePath /// "libraryPaths": List /// } /// /// Clients may not extend, implement or mix-in this class. class LibraryPathSet implements HasToJson { /// The filepath for which this request's libraries should be active in /// completion suggestions. This object associates filesystem regions to /// libraries and library directories of interest to the client. String scope; /// The paths of the libraries of interest to the client for completion /// suggestions. List libraryPaths; LibraryPathSet(this.scope, this.libraryPaths); factory LibraryPathSet.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String scope; if (json.containsKey('scope')) { scope = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.scope', json['scope'])) ?? jsonDecoder.decodeString('$jsonPath.scope', json['scope']); } else { throw jsonDecoder.mismatch(jsonPath, 'scope'); } List libraryPaths; if (json.containsKey('libraryPaths')) { libraryPaths = jsonDecoder.decodeList( '$jsonPath.libraryPaths', json['libraryPaths'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'libraryPaths'); } return LibraryPathSet(scope, libraryPaths); } else { throw jsonDecoder.mismatch(jsonPath, 'LibraryPathSet', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['scope'] = clientUriConverter?.toClientFilePath(scope) ?? scope; result['libraryPaths'] = libraryPaths .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is LibraryPathSet) { return scope == other.scope && listEqual( libraryPaths, other.libraryPaths, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( scope, Object.hashAll(libraryPaths), ); } /// lsp.handle params /// /// { /// "lspMessage": object /// } /// /// Clients may not extend, implement or mix-in this class. class LspHandleParams implements RequestParams { /// The LSP RequestMessage. Object lspMessage; LspHandleParams(this.lspMessage); factory LspHandleParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Object lspMessage; if (json.containsKey('lspMessage')) { lspMessage = json['lspMessage'] as Object; } else { throw jsonDecoder.mismatch(jsonPath, 'lspMessage'); } return LspHandleParams(lspMessage); } else { throw jsonDecoder.mismatch(jsonPath, 'lsp.handle params', json); } } factory LspHandleParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return LspHandleParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['lspMessage'] = lspMessage; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request( id, 'lsp.handle', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is LspHandleParams) { return lspMessage == other.lspMessage; } return false; } @override int get hashCode => lspMessage.hashCode; } /// lsp.handle result /// /// { /// "lspResponse": object /// } /// /// Clients may not extend, implement or mix-in this class. class LspHandleResult implements ResponseResult { /// The LSP ResponseMessage returned by the handler. Object lspResponse; LspHandleResult(this.lspResponse); factory LspHandleResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Object lspResponse; if (json.containsKey('lspResponse')) { lspResponse = json['lspResponse'] as Object; } else { throw jsonDecoder.mismatch(jsonPath, 'lspResponse'); } return LspHandleResult(lspResponse); } else { throw jsonDecoder.mismatch(jsonPath, 'lsp.handle result', json); } } factory LspHandleResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return LspHandleResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['lspResponse'] = lspResponse; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is LspHandleResult) { return lspResponse == other.lspResponse; } return false; } @override int get hashCode => lspResponse.hashCode; } /// lsp.notification params /// /// { /// "lspNotification": object /// } /// /// Clients may not extend, implement or mix-in this class. class LspNotificationParams implements HasToJson { /// The LSP NotificationMessage sent by the server. Object lspNotification; LspNotificationParams(this.lspNotification); factory LspNotificationParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Object lspNotification; if (json.containsKey('lspNotification')) { lspNotification = json['lspNotification'] as Object; } else { throw jsonDecoder.mismatch(jsonPath, 'lspNotification'); } return LspNotificationParams(lspNotification); } else { throw jsonDecoder.mismatch(jsonPath, 'lsp.notification params', json); } } factory LspNotificationParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return LspNotificationParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['lspNotification'] = lspNotification; return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'lsp.notification', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is LspNotificationParams) { return lspNotification == other.lspNotification; } return false; } @override int get hashCode => lspNotification.hashCode; } /// MessageAction /// /// { /// "label": String /// } /// /// Clients may not extend, implement or mix-in this class. class MessageAction implements HasToJson { /// The label of the button to be displayed, and the value to be returned to /// the server if the button is clicked. String label; MessageAction(this.label); factory MessageAction.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String label; if (json.containsKey('label')) { label = jsonDecoder.decodeString('$jsonPath.label', json['label']); } else { throw jsonDecoder.mismatch(jsonPath, 'label'); } return MessageAction(label); } else { throw jsonDecoder.mismatch(jsonPath, 'MessageAction', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['label'] = label; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is MessageAction) { return label == other.label; } return false; } @override int get hashCode => label.hashCode; } /// MessageType /// /// enum { /// ERROR /// WARNING /// INFO /// LOG /// } /// /// Clients may not extend, implement or mix-in this class. class MessageType implements Enum { /// The message is an error message. static const MessageType ERROR = MessageType._('ERROR'); /// The message is a warning message. static const MessageType WARNING = MessageType._('WARNING'); /// The message is an informational message. static const MessageType INFO = MessageType._('INFO'); /// The message is a log message. static const MessageType LOG = MessageType._('LOG'); /// A list containing all of the enum values that are defined. static const List VALUES = [ ERROR, WARNING, INFO, LOG ]; @override final String name; const MessageType._(this.name); factory MessageType(String name) { switch (name) { case 'ERROR': return ERROR; case 'WARNING': return WARNING; case 'INFO': return INFO; case 'LOG': return LOG; } throw Exception('Illegal enum value: $name'); } factory MessageType.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return MessageType(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'MessageType', json); } @override String toString() => 'MessageType.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// moveFile feedback /// /// Clients may not extend, implement or mix-in this class. class MoveFileFeedback extends RefactoringFeedback implements HasToJson { @override bool operator ==(other) => other is MoveFileFeedback; @override int get hashCode => 438975893; } /// moveFile options /// /// { /// "newFile": FilePath /// } /// /// Clients may not extend, implement or mix-in this class. class MoveFileOptions extends RefactoringOptions { /// The new file path to which the given file is being moved. String newFile; MoveFileOptions(this.newFile); factory MoveFileOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String newFile; if (json.containsKey('newFile')) { newFile = clientUriConverter?.fromClientFilePath(jsonDecoder .decodeString('$jsonPath.newFile', json['newFile'])) ?? jsonDecoder.decodeString('$jsonPath.newFile', json['newFile']); } else { throw jsonDecoder.mismatch(jsonPath, 'newFile'); } return MoveFileOptions(newFile); } else { throw jsonDecoder.mismatch(jsonPath, 'moveFile options', json); } } factory MoveFileOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return MoveFileOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['newFile'] = clientUriConverter?.toClientFilePath(newFile) ?? newFile; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is MoveFileOptions) { return newFile == other.newFile; } return false; } @override int get hashCode => newFile.hashCode; } /// OverriddenMember /// /// { /// "element": Element /// "className": String /// } /// /// Clients may not extend, implement or mix-in this class. class OverriddenMember implements HasToJson { /// The element that is being overridden. Element element; /// The name of the class in which the member is defined. String className; OverriddenMember(this.element, this.className); factory OverriddenMember.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Element element; if (json.containsKey('element')) { element = Element.fromJson( jsonDecoder, '$jsonPath.element', json['element'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'element'); } String className; if (json.containsKey('className')) { className = jsonDecoder.decodeString('$jsonPath.className', json['className']); } else { throw jsonDecoder.mismatch(jsonPath, 'className'); } return OverriddenMember(element, className); } else { throw jsonDecoder.mismatch(jsonPath, 'OverriddenMember', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['element'] = element.toJson(clientUriConverter: clientUriConverter); result['className'] = className; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is OverriddenMember) { return element == other.element && className == other.className; } return false; } @override int get hashCode => Object.hash( element, className, ); } /// Override /// /// { /// "offset": int /// "length": int /// "superclassMember": optional OverriddenMember /// "interfaceMembers": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class Override implements HasToJson { /// The offset of the name of the overriding member. int offset; /// The length of the name of the overriding member. int length; /// The member inherited from a superclass that is overridden by the /// overriding member. The field is omitted if there is no superclass member, /// in which case there must be at least one interface member. OverriddenMember? superclassMember; /// The members inherited from interfaces that are overridden by the /// overriding member. The field is omitted if there are no interface /// members, in which case there must be a superclass member. List? interfaceMembers; Override(this.offset, this.length, {this.superclassMember, this.interfaceMembers}); factory Override.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } OverriddenMember? superclassMember; if (json.containsKey('superclassMember')) { superclassMember = OverriddenMember.fromJson( jsonDecoder, '$jsonPath.superclassMember', json['superclassMember'], clientUriConverter: clientUriConverter); } List? interfaceMembers; if (json.containsKey('interfaceMembers')) { interfaceMembers = jsonDecoder.decodeList( '$jsonPath.interfaceMembers', json['interfaceMembers'], (String jsonPath, Object? json) => OverriddenMember.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return Override(offset, length, superclassMember: superclassMember, interfaceMembers: interfaceMembers); } else { throw jsonDecoder.mismatch(jsonPath, 'Override', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; var superclassMember = this.superclassMember; if (superclassMember != null) { result['superclassMember'] = superclassMember.toJson(clientUriConverter: clientUriConverter); } var interfaceMembers = this.interfaceMembers; if (interfaceMembers != null) { result['interfaceMembers'] = interfaceMembers .map((OverriddenMember value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is Override) { return offset == other.offset && length == other.length && superclassMember == other.superclassMember && listEqual(interfaceMembers, other.interfaceMembers, (OverriddenMember a, OverriddenMember b) => a == b); } return false; } @override int get hashCode => Object.hash( offset, length, superclassMember, Object.hashAll(interfaceMembers ?? []), ); } /// PostfixTemplateDescriptor /// /// { /// "name": String /// "key": String /// "example": String /// } /// /// Clients may not extend, implement or mix-in this class. class PostfixTemplateDescriptor implements HasToJson { /// The template name, shown in the UI. String name; /// The unique template key, not shown in the UI. String key; /// A short example of the transformation performed when the template is /// applied. String example; PostfixTemplateDescriptor(this.name, this.key, this.example); factory PostfixTemplateDescriptor.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } String key; if (json.containsKey('key')) { key = jsonDecoder.decodeString('$jsonPath.key', json['key']); } else { throw jsonDecoder.mismatch(jsonPath, 'key'); } String example; if (json.containsKey('example')) { example = jsonDecoder.decodeString('$jsonPath.example', json['example']); } else { throw jsonDecoder.mismatch(jsonPath, 'example'); } return PostfixTemplateDescriptor(name, key, example); } else { throw jsonDecoder.mismatch(jsonPath, 'PostfixTemplateDescriptor', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['key'] = key; result['example'] = example; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is PostfixTemplateDescriptor) { return name == other.name && key == other.key && example == other.example; } return false; } @override int get hashCode => Object.hash( name, key, example, ); } /// PubStatus /// /// { /// "isListingPackageDirs": bool /// } /// /// Clients may not extend, implement or mix-in this class. class PubStatus implements HasToJson { /// True if the server is currently running pub to produce a list of package /// directories. bool isListingPackageDirs; PubStatus(this.isListingPackageDirs); factory PubStatus.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool isListingPackageDirs; if (json.containsKey('isListingPackageDirs')) { isListingPackageDirs = jsonDecoder.decodeBool( '$jsonPath.isListingPackageDirs', json['isListingPackageDirs']); } else { throw jsonDecoder.mismatch(jsonPath, 'isListingPackageDirs'); } return PubStatus(isListingPackageDirs); } else { throw jsonDecoder.mismatch(jsonPath, 'PubStatus', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['isListingPackageDirs'] = isListingPackageDirs; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is PubStatus) { return isListingPackageDirs == other.isListingPackageDirs; } return false; } @override int get hashCode => isListingPackageDirs.hashCode; } /// RefactoringFeedback /// /// { /// } /// /// Clients may not extend, implement or mix-in this class. class RefactoringFeedback implements HasToJson { RefactoringFeedback(); static RefactoringFeedback? fromJson(JsonDecoder jsonDecoder, String jsonPath, Object? json, Map responseJson, {required ClientUriConverter? clientUriConverter}) { return refactoringFeedbackFromJson( jsonDecoder, jsonPath, json, responseJson, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RefactoringFeedback) { return true; } return false; } @override int get hashCode => 0; } /// RefactoringOptions /// /// { /// } /// /// Clients may not extend, implement or mix-in this class. class RefactoringOptions implements HasToJson { RefactoringOptions(); static RefactoringOptions? fromJson(JsonDecoder jsonDecoder, String jsonPath, Object? json, RefactoringKind kind, {required ClientUriConverter? clientUriConverter}) { return refactoringOptionsFromJson(jsonDecoder, jsonPath, json, kind, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RefactoringOptions) { return true; } return false; } @override int get hashCode => 0; } /// rename feedback /// /// { /// "offset": int /// "length": int /// "elementKindName": String /// "oldName": String /// } /// /// Clients may not extend, implement or mix-in this class. class RenameFeedback extends RefactoringFeedback { /// The offset to the beginning of the name selected to be renamed, or -1 if /// the name does not exist yet. int offset; /// The length of the name selected to be renamed. int length; /// The human-readable description of the kind of element being renamed (such /// as "class" or "function type alias"). String elementKindName; /// The old name of the element before the refactoring. String oldName; RenameFeedback(this.offset, this.length, this.elementKindName, this.oldName); factory RenameFeedback.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } String elementKindName; if (json.containsKey('elementKindName')) { elementKindName = jsonDecoder.decodeString( '$jsonPath.elementKindName', json['elementKindName']); } else { throw jsonDecoder.mismatch(jsonPath, 'elementKindName'); } String oldName; if (json.containsKey('oldName')) { oldName = jsonDecoder.decodeString('$jsonPath.oldName', json['oldName']); } else { throw jsonDecoder.mismatch(jsonPath, 'oldName'); } return RenameFeedback(offset, length, elementKindName, oldName); } else { throw jsonDecoder.mismatch(jsonPath, 'rename feedback', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; result['elementKindName'] = elementKindName; result['oldName'] = oldName; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RenameFeedback) { return offset == other.offset && length == other.length && elementKindName == other.elementKindName && oldName == other.oldName; } return false; } @override int get hashCode => Object.hash( offset, length, elementKindName, oldName, ); } /// rename options /// /// { /// "newName": String /// } /// /// Clients may not extend, implement or mix-in this class. class RenameOptions extends RefactoringOptions { /// The name that the element should have after the refactoring. String newName; RenameOptions(this.newName); factory RenameOptions.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String newName; if (json.containsKey('newName')) { newName = jsonDecoder.decodeString('$jsonPath.newName', json['newName']); } else { throw jsonDecoder.mismatch(jsonPath, 'newName'); } return RenameOptions(newName); } else { throw jsonDecoder.mismatch(jsonPath, 'rename options', json); } } factory RenameOptions.fromRefactoringParams( EditGetRefactoringParams refactoringParams, Request request, {required ClientUriConverter? clientUriConverter}) { return RenameOptions.fromJson( RequestDecoder(request), 'options', refactoringParams.options, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['newName'] = newName; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RenameOptions) { return newName == other.newName; } return false; } @override int get hashCode => newName.hashCode; } /// RequestError /// /// { /// "code": RequestErrorCode /// "message": String /// "stackTrace": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class RequestError implements HasToJson { /// A code that uniquely identifies the error that occurred. RequestErrorCode code; /// A short description of the error. String message; /// The stack trace associated with processing the request, used for /// debugging the server. String? stackTrace; RequestError(this.code, this.message, {this.stackTrace}); factory RequestError.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { RequestErrorCode code; if (json.containsKey('code')) { code = RequestErrorCode.fromJson( jsonDecoder, '$jsonPath.code', json['code'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'code'); } String message; if (json.containsKey('message')) { message = jsonDecoder.decodeString('$jsonPath.message', json['message']); } else { throw jsonDecoder.mismatch(jsonPath, 'message'); } String? stackTrace; if (json.containsKey('stackTrace')) { stackTrace = jsonDecoder.decodeString( '$jsonPath.stackTrace', json['stackTrace']); } return RequestError(code, message, stackTrace: stackTrace); } else { throw jsonDecoder.mismatch(jsonPath, 'RequestError', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['code'] = code.toJson(clientUriConverter: clientUriConverter); result['message'] = message; var stackTrace = this.stackTrace; if (stackTrace != null) { result['stackTrace'] = stackTrace; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RequestError) { return code == other.code && message == other.message && stackTrace == other.stackTrace; } return false; } @override int get hashCode => Object.hash( code, message, stackTrace, ); } /// RequestErrorCode /// /// enum { /// CONTENT_MODIFIED /// DEBUG_PORT_COULD_NOT_BE_OPENED /// FILE_NOT_ANALYZED /// FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED /// FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET /// FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION /// FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID /// FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED /// FORMAT_INVALID_FILE /// FORMAT_WITH_ERRORS /// GET_ERRORS_INVALID_FILE /// GET_FIXES_INVALID_FILE /// GET_IMPORTED_ELEMENTS_INVALID_FILE /// GET_NAVIGATION_INVALID_FILE /// GET_REACHABLE_SOURCES_INVALID_FILE /// GET_SIGNATURE_INVALID_FILE /// GET_SIGNATURE_INVALID_OFFSET /// GET_SIGNATURE_UNKNOWN_FUNCTION /// IMPORT_ELEMENTS_INVALID_FILE /// INVALID_ANALYSIS_ROOT /// INVALID_EXECUTION_CONTEXT /// INVALID_FILE_PATH_FORMAT /// INVALID_OVERLAY_CHANGE /// INVALID_PARAMETER /// INVALID_REQUEST /// ORGANIZE_DIRECTIVES_ERROR /// REFACTORING_REQUEST_CANCELLED /// SERVER_ALREADY_STARTED /// SERVER_ERROR /// SORT_MEMBERS_INVALID_FILE /// SORT_MEMBERS_PARSE_ERRORS /// UNKNOWN_REQUEST /// UNSUPPORTED_FEATURE /// } /// /// Clients may not extend, implement or mix-in this class. class RequestErrorCode implements Enum { /// An "analysis.getErrors" or "analysis.getNavigation" request could not be /// satisfied because the content of the file changed before the requested /// results could be computed. static const RequestErrorCode CONTENT_MODIFIED = RequestErrorCode._('CONTENT_MODIFIED'); /// The server was unable to open a port for the diagnostic server. static const RequestErrorCode DEBUG_PORT_COULD_NOT_BE_OPENED = RequestErrorCode._('DEBUG_PORT_COULD_NOT_BE_OPENED'); /// A request specified a FilePath which does not match a file in an analysis /// root, or the requested operation is not available for the file. static const RequestErrorCode FILE_NOT_ANALYZED = RequestErrorCode._('FILE_NOT_ANALYZED'); /// A file was change while widget descriptions were being computed. static const RequestErrorCode FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED = RequestErrorCode._('FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED'); /// The given location does not have a supported widget. static const RequestErrorCode FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET = RequestErrorCode._('FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET'); /// The given property expression is invalid, e.g. has a syntax error. static const RequestErrorCode FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION = RequestErrorCode._( 'FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION'); /// The given property identifier is not valid. It might have never been /// valid, or a change to code invalidated it, or its TTL was exceeded. static const RequestErrorCode FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID = RequestErrorCode._('FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID'); /// The value of the property cannot be removed, for example because the /// corresponding constructor argument is required, and the server does not /// know what default value to use. static const RequestErrorCode FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED = RequestErrorCode._('FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED'); /// An "edit.format" request specified a FilePath which does not match a Dart /// file in an analysis root. static const RequestErrorCode FORMAT_INVALID_FILE = RequestErrorCode._('FORMAT_INVALID_FILE'); /// An "edit.format" request specified a file that contains syntax errors. static const RequestErrorCode FORMAT_WITH_ERRORS = RequestErrorCode._('FORMAT_WITH_ERRORS'); /// An "analysis.getErrors" request specified a FilePath which does not match /// a file currently subject to analysis. static const RequestErrorCode GET_ERRORS_INVALID_FILE = RequestErrorCode._('GET_ERRORS_INVALID_FILE'); /// An "edit.getFixes" request specified a FilePath which does not match a /// file currently subject to analysis. static const RequestErrorCode GET_FIXES_INVALID_FILE = RequestErrorCode._('GET_FIXES_INVALID_FILE'); /// An "analysis.getImportedElements" request specified a FilePath that does /// not match a file currently subject to analysis. static const RequestErrorCode GET_IMPORTED_ELEMENTS_INVALID_FILE = RequestErrorCode._('GET_IMPORTED_ELEMENTS_INVALID_FILE'); /// An "analysis.getNavigation" request specified a FilePath which does not /// match a file currently subject to analysis. static const RequestErrorCode GET_NAVIGATION_INVALID_FILE = RequestErrorCode._('GET_NAVIGATION_INVALID_FILE'); /// An "analysis.getReachableSources" request specified a FilePath which does /// not match a file currently subject to analysis. static const RequestErrorCode GET_REACHABLE_SOURCES_INVALID_FILE = RequestErrorCode._('GET_REACHABLE_SOURCES_INVALID_FILE'); /// An "analysis.getSignature" request specified a FilePath which does not /// match a file currently subject to analysis. static const RequestErrorCode GET_SIGNATURE_INVALID_FILE = RequestErrorCode._('GET_SIGNATURE_INVALID_FILE'); /// An "analysis.getSignature" request specified an offset which is not a /// valid location within for the contents of the file specified FilePath. static const RequestErrorCode GET_SIGNATURE_INVALID_OFFSET = RequestErrorCode._('GET_SIGNATURE_INVALID_OFFSET'); /// An "analysis.getSignature" request specified an offset that could not be /// matched to a function call. static const RequestErrorCode GET_SIGNATURE_UNKNOWN_FUNCTION = RequestErrorCode._('GET_SIGNATURE_UNKNOWN_FUNCTION'); /// An "edit.importElements" request specified a FilePath that does not match /// a file currently subject to analysis. static const RequestErrorCode IMPORT_ELEMENTS_INVALID_FILE = RequestErrorCode._('IMPORT_ELEMENTS_INVALID_FILE'); /// A path passed as an argument to a request (such as analysis.reanalyze) is /// required to be an analysis root, but isn't. static const RequestErrorCode INVALID_ANALYSIS_ROOT = RequestErrorCode._('INVALID_ANALYSIS_ROOT'); /// The context root used to create an execution context does not exist. static const RequestErrorCode INVALID_EXECUTION_CONTEXT = RequestErrorCode._('INVALID_EXECUTION_CONTEXT'); /// The format of the given file path is invalid, e.g. is not absolute and /// normalized. static const RequestErrorCode INVALID_FILE_PATH_FORMAT = RequestErrorCode._('INVALID_FILE_PATH_FORMAT'); /// An "analysis.updateContent" request contained a ChangeContentOverlay /// object which can't be applied, due to an edit having an offset or length /// that is out of range. static const RequestErrorCode INVALID_OVERLAY_CHANGE = RequestErrorCode._('INVALID_OVERLAY_CHANGE'); /// One of the method parameters was invalid. static const RequestErrorCode INVALID_PARAMETER = RequestErrorCode._('INVALID_PARAMETER'); /// A malformed request was received. static const RequestErrorCode INVALID_REQUEST = RequestErrorCode._('INVALID_REQUEST'); /// An "edit.organizeDirectives" request specified a Dart file that cannot be /// analyzed. The reason is described in the message. static const RequestErrorCode ORGANIZE_DIRECTIVES_ERROR = RequestErrorCode._('ORGANIZE_DIRECTIVES_ERROR'); /// Another refactoring request was received during processing of this one. static const RequestErrorCode REFACTORING_REQUEST_CANCELLED = RequestErrorCode._('REFACTORING_REQUEST_CANCELLED'); /// The analysis server has already been started (and hence won't accept new /// connections). /// /// This error is included for future expansion; at present the analysis /// server can only speak to one client at a time so this error will never /// occur. static const RequestErrorCode SERVER_ALREADY_STARTED = RequestErrorCode._('SERVER_ALREADY_STARTED'); /// An internal error occurred in the analysis server. Also see the /// server.error notification. static const RequestErrorCode SERVER_ERROR = RequestErrorCode._('SERVER_ERROR'); /// An "edit.sortMembers" request specified a FilePath which does not match a /// Dart file in an analysis root. static const RequestErrorCode SORT_MEMBERS_INVALID_FILE = RequestErrorCode._('SORT_MEMBERS_INVALID_FILE'); /// An "edit.sortMembers" request specified a Dart file that has scan or /// parse errors. static const RequestErrorCode SORT_MEMBERS_PARSE_ERRORS = RequestErrorCode._('SORT_MEMBERS_PARSE_ERRORS'); /// A request was received which the analysis server does not recognize, or /// cannot handle in its current configuration. static const RequestErrorCode UNKNOWN_REQUEST = RequestErrorCode._('UNKNOWN_REQUEST'); /// The analysis server was requested to perform an action which is not /// supported. /// /// This is a legacy error; it will be removed before the API reaches version /// 1.0. static const RequestErrorCode UNSUPPORTED_FEATURE = RequestErrorCode._('UNSUPPORTED_FEATURE'); /// A list containing all of the enum values that are defined. static const List VALUES = [ CONTENT_MODIFIED, DEBUG_PORT_COULD_NOT_BE_OPENED, FILE_NOT_ANALYZED, FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED, FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET, FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION, FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID, FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED, FORMAT_INVALID_FILE, FORMAT_WITH_ERRORS, GET_ERRORS_INVALID_FILE, GET_FIXES_INVALID_FILE, GET_IMPORTED_ELEMENTS_INVALID_FILE, GET_NAVIGATION_INVALID_FILE, GET_REACHABLE_SOURCES_INVALID_FILE, GET_SIGNATURE_INVALID_FILE, GET_SIGNATURE_INVALID_OFFSET, GET_SIGNATURE_UNKNOWN_FUNCTION, IMPORT_ELEMENTS_INVALID_FILE, INVALID_ANALYSIS_ROOT, INVALID_EXECUTION_CONTEXT, INVALID_FILE_PATH_FORMAT, INVALID_OVERLAY_CHANGE, INVALID_PARAMETER, INVALID_REQUEST, ORGANIZE_DIRECTIVES_ERROR, REFACTORING_REQUEST_CANCELLED, SERVER_ALREADY_STARTED, SERVER_ERROR, SORT_MEMBERS_INVALID_FILE, SORT_MEMBERS_PARSE_ERRORS, UNKNOWN_REQUEST, UNSUPPORTED_FEATURE ]; @override final String name; const RequestErrorCode._(this.name); factory RequestErrorCode(String name) { switch (name) { case 'CONTENT_MODIFIED': return CONTENT_MODIFIED; case 'DEBUG_PORT_COULD_NOT_BE_OPENED': return DEBUG_PORT_COULD_NOT_BE_OPENED; case 'FILE_NOT_ANALYZED': return FILE_NOT_ANALYZED; case 'FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED': return FLUTTER_GET_WIDGET_DESCRIPTION_CONTENT_MODIFIED; case 'FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET': return FLUTTER_GET_WIDGET_DESCRIPTION_NO_WIDGET; case 'FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION': return FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_EXPRESSION; case 'FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID': return FLUTTER_SET_WIDGET_PROPERTY_VALUE_INVALID_ID; case 'FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED': return FLUTTER_SET_WIDGET_PROPERTY_VALUE_IS_REQUIRED; case 'FORMAT_INVALID_FILE': return FORMAT_INVALID_FILE; case 'FORMAT_WITH_ERRORS': return FORMAT_WITH_ERRORS; case 'GET_ERRORS_INVALID_FILE': return GET_ERRORS_INVALID_FILE; case 'GET_FIXES_INVALID_FILE': return GET_FIXES_INVALID_FILE; case 'GET_IMPORTED_ELEMENTS_INVALID_FILE': return GET_IMPORTED_ELEMENTS_INVALID_FILE; case 'GET_NAVIGATION_INVALID_FILE': return GET_NAVIGATION_INVALID_FILE; case 'GET_REACHABLE_SOURCES_INVALID_FILE': return GET_REACHABLE_SOURCES_INVALID_FILE; case 'GET_SIGNATURE_INVALID_FILE': return GET_SIGNATURE_INVALID_FILE; case 'GET_SIGNATURE_INVALID_OFFSET': return GET_SIGNATURE_INVALID_OFFSET; case 'GET_SIGNATURE_UNKNOWN_FUNCTION': return GET_SIGNATURE_UNKNOWN_FUNCTION; case 'IMPORT_ELEMENTS_INVALID_FILE': return IMPORT_ELEMENTS_INVALID_FILE; case 'INVALID_ANALYSIS_ROOT': return INVALID_ANALYSIS_ROOT; case 'INVALID_EXECUTION_CONTEXT': return INVALID_EXECUTION_CONTEXT; case 'INVALID_FILE_PATH_FORMAT': return INVALID_FILE_PATH_FORMAT; case 'INVALID_OVERLAY_CHANGE': return INVALID_OVERLAY_CHANGE; case 'INVALID_PARAMETER': return INVALID_PARAMETER; case 'INVALID_REQUEST': return INVALID_REQUEST; case 'ORGANIZE_DIRECTIVES_ERROR': return ORGANIZE_DIRECTIVES_ERROR; case 'REFACTORING_REQUEST_CANCELLED': return REFACTORING_REQUEST_CANCELLED; case 'SERVER_ALREADY_STARTED': return SERVER_ALREADY_STARTED; case 'SERVER_ERROR': return SERVER_ERROR; case 'SORT_MEMBERS_INVALID_FILE': return SORT_MEMBERS_INVALID_FILE; case 'SORT_MEMBERS_PARSE_ERRORS': return SORT_MEMBERS_PARSE_ERRORS; case 'UNKNOWN_REQUEST': return UNKNOWN_REQUEST; case 'UNSUPPORTED_FEATURE': return UNSUPPORTED_FEATURE; } throw Exception('Illegal enum value: $name'); } factory RequestErrorCode.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return RequestErrorCode(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'RequestErrorCode', json); } @override String toString() => 'RequestErrorCode.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// RuntimeCompletionExpression /// /// { /// "offset": int /// "length": int /// "type": optional RuntimeCompletionExpressionType /// } /// /// Clients may not extend, implement or mix-in this class. class RuntimeCompletionExpression implements HasToJson { /// The offset of the expression in the code for completion. int offset; /// The length of the expression in the code for completion. int length; /// When the expression is sent from the server to the client, the type is /// omitted. The client should fill the type when it sends the request to the /// server again. RuntimeCompletionExpressionType? type; RuntimeCompletionExpression(this.offset, this.length, {this.type}); factory RuntimeCompletionExpression.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } int length; if (json.containsKey('length')) { length = jsonDecoder.decodeInt('$jsonPath.length', json['length']); } else { throw jsonDecoder.mismatch(jsonPath, 'length'); } RuntimeCompletionExpressionType? type; if (json.containsKey('type')) { type = RuntimeCompletionExpressionType.fromJson( jsonDecoder, '$jsonPath.type', json['type'], clientUriConverter: clientUriConverter); } return RuntimeCompletionExpression(offset, length, type: type); } else { throw jsonDecoder.mismatch(jsonPath, 'RuntimeCompletionExpression', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['offset'] = offset; result['length'] = length; var type = this.type; if (type != null) { result['type'] = type.toJson(clientUriConverter: clientUriConverter); } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RuntimeCompletionExpression) { return offset == other.offset && length == other.length && type == other.type; } return false; } @override int get hashCode => Object.hash( offset, length, type, ); } /// RuntimeCompletionExpressionType /// /// { /// "libraryPath": optional FilePath /// "kind": RuntimeCompletionExpressionTypeKind /// "name": optional String /// "typeArguments": optional List /// "returnType": optional RuntimeCompletionExpressionType /// "parameterTypes": optional List /// "parameterNames": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class RuntimeCompletionExpressionType implements HasToJson { /// The path of the library that has this type. Omitted if the type is not /// declared in any library, e.g. "dynamic", or "void". String? libraryPath; /// The kind of the type. RuntimeCompletionExpressionTypeKind kind; /// The name of the type. Omitted if the type does not have a name, e.g. an /// inline function type. String? name; /// The type arguments of the type. Omitted if the type does not have type /// parameters. List? typeArguments; /// If the type is a function type, the return type of the function. Omitted /// if the type is not a function type. RuntimeCompletionExpressionType? returnType; /// If the type is a function type, the types of the function parameters of /// all kinds - required, optional positional, and optional named. Omitted if /// the type is not a function type. List? parameterTypes; /// If the type is a function type, the names of the function parameters of /// all kinds - required, optional positional, and optional named. The names /// of positional parameters are empty strings. Omitted if the type is not a /// function type. List? parameterNames; RuntimeCompletionExpressionType(this.kind, {this.libraryPath, this.name, this.typeArguments, this.returnType, this.parameterTypes, this.parameterNames}); factory RuntimeCompletionExpressionType.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? libraryPath; if (json.containsKey('libraryPath')) { libraryPath = clientUriConverter?.fromClientFilePath(jsonDecoder .decodeString('$jsonPath.libraryPath', json['libraryPath'])) ?? jsonDecoder.decodeString( '$jsonPath.libraryPath', json['libraryPath']); } RuntimeCompletionExpressionTypeKind kind; if (json.containsKey('kind')) { kind = RuntimeCompletionExpressionTypeKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } String? name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } List? typeArguments; if (json.containsKey('typeArguments')) { typeArguments = jsonDecoder.decodeList( '$jsonPath.typeArguments', json['typeArguments'], (String jsonPath, Object? json) => RuntimeCompletionExpressionType.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } RuntimeCompletionExpressionType? returnType; if (json.containsKey('returnType')) { returnType = RuntimeCompletionExpressionType.fromJson( jsonDecoder, '$jsonPath.returnType', json['returnType'], clientUriConverter: clientUriConverter); } List? parameterTypes; if (json.containsKey('parameterTypes')) { parameterTypes = jsonDecoder.decodeList( '$jsonPath.parameterTypes', json['parameterTypes'], (String jsonPath, Object? json) => RuntimeCompletionExpressionType.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } List? parameterNames; if (json.containsKey('parameterNames')) { parameterNames = jsonDecoder.decodeList('$jsonPath.parameterNames', json['parameterNames'], jsonDecoder.decodeString); } return RuntimeCompletionExpressionType(kind, libraryPath: libraryPath, name: name, typeArguments: typeArguments, returnType: returnType, parameterTypes: parameterTypes, parameterNames: parameterNames); } else { throw jsonDecoder.mismatch( jsonPath, 'RuntimeCompletionExpressionType', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var libraryPath = this.libraryPath; if (libraryPath != null) { result['libraryPath'] = clientUriConverter?.toClientFilePath(libraryPath) ?? libraryPath; } result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); var name = this.name; if (name != null) { result['name'] = name; } var typeArguments = this.typeArguments; if (typeArguments != null) { result['typeArguments'] = typeArguments .map((RuntimeCompletionExpressionType value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } var returnType = this.returnType; if (returnType != null) { result['returnType'] = returnType.toJson(clientUriConverter: clientUriConverter); } var parameterTypes = this.parameterTypes; if (parameterTypes != null) { result['parameterTypes'] = parameterTypes .map((RuntimeCompletionExpressionType value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } var parameterNames = this.parameterNames; if (parameterNames != null) { result['parameterNames'] = parameterNames; } return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RuntimeCompletionExpressionType) { return libraryPath == other.libraryPath && kind == other.kind && name == other.name && listEqual( typeArguments, other.typeArguments, (RuntimeCompletionExpressionType a, RuntimeCompletionExpressionType b) => a == b) && returnType == other.returnType && listEqual( parameterTypes, other.parameterTypes, (RuntimeCompletionExpressionType a, RuntimeCompletionExpressionType b) => a == b) && listEqual(parameterNames, other.parameterNames, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( libraryPath, kind, name, Object.hashAll(typeArguments ?? []), returnType, Object.hashAll(parameterTypes ?? []), Object.hashAll(parameterNames ?? []), ); } /// RuntimeCompletionExpressionTypeKind /// /// enum { /// DYNAMIC /// FUNCTION /// INTERFACE /// } /// /// Clients may not extend, implement or mix-in this class. class RuntimeCompletionExpressionTypeKind implements Enum { static const RuntimeCompletionExpressionTypeKind DYNAMIC = RuntimeCompletionExpressionTypeKind._('DYNAMIC'); static const RuntimeCompletionExpressionTypeKind FUNCTION = RuntimeCompletionExpressionTypeKind._('FUNCTION'); static const RuntimeCompletionExpressionTypeKind INTERFACE = RuntimeCompletionExpressionTypeKind._('INTERFACE'); /// A list containing all of the enum values that are defined. static const List VALUES = [DYNAMIC, FUNCTION, INTERFACE]; @override final String name; const RuntimeCompletionExpressionTypeKind._(this.name); factory RuntimeCompletionExpressionTypeKind(String name) { switch (name) { case 'DYNAMIC': return DYNAMIC; case 'FUNCTION': return FUNCTION; case 'INTERFACE': return INTERFACE; } throw Exception('Illegal enum value: $name'); } factory RuntimeCompletionExpressionTypeKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return RuntimeCompletionExpressionTypeKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch( jsonPath, 'RuntimeCompletionExpressionTypeKind', json); } @override String toString() => 'RuntimeCompletionExpressionTypeKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// RuntimeCompletionVariable /// /// { /// "name": String /// "type": RuntimeCompletionExpressionType /// } /// /// Clients may not extend, implement or mix-in this class. class RuntimeCompletionVariable implements HasToJson { /// The name of the variable. The name "this" has a special meaning and is /// used as an implicit target for runtime completion, and in explicit "this" /// references. String name; /// The type of the variable. RuntimeCompletionExpressionType type; RuntimeCompletionVariable(this.name, this.type); factory RuntimeCompletionVariable.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } RuntimeCompletionExpressionType type; if (json.containsKey('type')) { type = RuntimeCompletionExpressionType.fromJson( jsonDecoder, '$jsonPath.type', json['type'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'type'); } return RuntimeCompletionVariable(name, type); } else { throw jsonDecoder.mismatch(jsonPath, 'RuntimeCompletionVariable', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; result['type'] = type.toJson(clientUriConverter: clientUriConverter); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is RuntimeCompletionVariable) { return name == other.name && type == other.type; } return false; } @override int get hashCode => Object.hash( name, type, ); } /// search.findElementReferences params /// /// { /// "file": FilePath /// "offset": int /// "includePotential": bool /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindElementReferencesParams implements RequestParams { /// The file containing the declaration of or reference to the element used /// to define the search. String file; /// The offset within the file of the declaration of or reference to the /// element. int offset; /// True if potential matches are to be included in the results. bool includePotential; SearchFindElementReferencesParams( this.file, this.offset, this.includePotential); factory SearchFindElementReferencesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } bool includePotential; if (json.containsKey('includePotential')) { includePotential = jsonDecoder.decodeBool( '$jsonPath.includePotential', json['includePotential']); } else { throw jsonDecoder.mismatch(jsonPath, 'includePotential'); } return SearchFindElementReferencesParams(file, offset, includePotential); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findElementReferences params', json); } } factory SearchFindElementReferencesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchFindElementReferencesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; result['includePotential'] = includePotential; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.findElementReferences', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindElementReferencesParams) { return file == other.file && offset == other.offset && includePotential == other.includePotential; } return false; } @override int get hashCode => Object.hash( file, offset, includePotential, ); } /// search.findElementReferences result /// /// { /// "id": optional SearchId /// "element": optional Element /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindElementReferencesResult implements ResponseResult { /// The identifier used to associate results with this search request. /// /// If no element was found at the given location, this field will be absent, /// and no results will be reported via the search.results notification. String? id; /// The element referenced or defined at the given offset and whose /// references will be returned in the search results. /// /// If no element was found at the given location, this field will be absent. Element? element; SearchFindElementReferencesResult({this.id, this.element}); factory SearchFindElementReferencesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } Element? element; if (json.containsKey('element')) { element = Element.fromJson( jsonDecoder, '$jsonPath.element', json['element'], clientUriConverter: clientUriConverter); } return SearchFindElementReferencesResult(id: id, element: element); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findElementReferences result', json); } } factory SearchFindElementReferencesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchFindElementReferencesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var id = this.id; if (id != null) { result['id'] = id; } var element = this.element; if (element != null) { result['element'] = element.toJson(clientUriConverter: clientUriConverter); } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindElementReferencesResult) { return id == other.id && element == other.element; } return false; } @override int get hashCode => Object.hash( id, element, ); } /// search.findMemberDeclarations params /// /// { /// "name": String /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindMemberDeclarationsParams implements RequestParams { /// The name of the declarations to be found. String name; SearchFindMemberDeclarationsParams(this.name); factory SearchFindMemberDeclarationsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } return SearchFindMemberDeclarationsParams(name); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findMemberDeclarations params', json); } } factory SearchFindMemberDeclarationsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchFindMemberDeclarationsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.findMemberDeclarations', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindMemberDeclarationsParams) { return name == other.name; } return false; } @override int get hashCode => name.hashCode; } /// search.findMemberDeclarations result /// /// { /// "id": SearchId /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindMemberDeclarationsResult implements ResponseResult { /// The identifier used to associate results with this search request. String id; SearchFindMemberDeclarationsResult(this.id); factory SearchFindMemberDeclarationsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return SearchFindMemberDeclarationsResult(id); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findMemberDeclarations result', json); } } factory SearchFindMemberDeclarationsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchFindMemberDeclarationsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindMemberDeclarationsResult) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// search.findMemberReferences params /// /// { /// "name": String /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindMemberReferencesParams implements RequestParams { /// The name of the references to be found. String name; SearchFindMemberReferencesParams(this.name); factory SearchFindMemberReferencesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String name; if (json.containsKey('name')) { name = jsonDecoder.decodeString('$jsonPath.name', json['name']); } else { throw jsonDecoder.mismatch(jsonPath, 'name'); } return SearchFindMemberReferencesParams(name); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findMemberReferences params', json); } } factory SearchFindMemberReferencesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchFindMemberReferencesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['name'] = name; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.findMemberReferences', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindMemberReferencesParams) { return name == other.name; } return false; } @override int get hashCode => name.hashCode; } /// search.findMemberReferences result /// /// { /// "id": SearchId /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindMemberReferencesResult implements ResponseResult { /// The identifier used to associate results with this search request. String id; SearchFindMemberReferencesResult(this.id); factory SearchFindMemberReferencesResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return SearchFindMemberReferencesResult(id); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findMemberReferences result', json); } } factory SearchFindMemberReferencesResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchFindMemberReferencesResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindMemberReferencesResult) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// search.findTopLevelDeclarations params /// /// { /// "pattern": String /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindTopLevelDeclarationsParams implements RequestParams { /// The regular expression used to match the names of the declarations to be /// found. String pattern; SearchFindTopLevelDeclarationsParams(this.pattern); factory SearchFindTopLevelDeclarationsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String pattern; if (json.containsKey('pattern')) { pattern = jsonDecoder.decodeString('$jsonPath.pattern', json['pattern']); } else { throw jsonDecoder.mismatch(jsonPath, 'pattern'); } return SearchFindTopLevelDeclarationsParams(pattern); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findTopLevelDeclarations params', json); } } factory SearchFindTopLevelDeclarationsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchFindTopLevelDeclarationsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['pattern'] = pattern; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.findTopLevelDeclarations', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindTopLevelDeclarationsParams) { return pattern == other.pattern; } return false; } @override int get hashCode => pattern.hashCode; } /// search.findTopLevelDeclarations result /// /// { /// "id": SearchId /// } /// /// Clients may not extend, implement or mix-in this class. class SearchFindTopLevelDeclarationsResult implements ResponseResult { /// The identifier used to associate results with this search request. String id; SearchFindTopLevelDeclarationsResult(this.id); factory SearchFindTopLevelDeclarationsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return SearchFindTopLevelDeclarationsResult(id); } else { throw jsonDecoder.mismatch( jsonPath, 'search.findTopLevelDeclarations result', json); } } factory SearchFindTopLevelDeclarationsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchFindTopLevelDeclarationsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchFindTopLevelDeclarationsResult) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// search.getElementDeclarations params /// /// { /// "file": optional FilePath /// "pattern": optional String /// "maxResults": optional int /// } /// /// Clients may not extend, implement or mix-in this class. class SearchGetElementDeclarationsParams implements RequestParams { /// If this field is provided, return only declarations in this file. If this /// field is missing, return declarations in all files. String? file; /// The regular expression used to match the names of declarations. If this /// field is missing, return all declarations. String? pattern; /// The maximum number of declarations to return. If this field is missing, /// return all matching declarations. int? maxResults; SearchGetElementDeclarationsParams( {this.file, this.pattern, this.maxResults}); factory SearchGetElementDeclarationsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } String? pattern; if (json.containsKey('pattern')) { pattern = jsonDecoder.decodeString('$jsonPath.pattern', json['pattern']); } int? maxResults; if (json.containsKey('maxResults')) { maxResults = jsonDecoder.decodeInt('$jsonPath.maxResults', json['maxResults']); } return SearchGetElementDeclarationsParams( file: file, pattern: pattern, maxResults: maxResults); } else { throw jsonDecoder.mismatch( jsonPath, 'search.getElementDeclarations params', json); } } factory SearchGetElementDeclarationsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchGetElementDeclarationsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var file = this.file; if (file != null) { result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; } var pattern = this.pattern; if (pattern != null) { result['pattern'] = pattern; } var maxResults = this.maxResults; if (maxResults != null) { result['maxResults'] = maxResults; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.getElementDeclarations', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchGetElementDeclarationsParams) { return file == other.file && pattern == other.pattern && maxResults == other.maxResults; } return false; } @override int get hashCode => Object.hash( file, pattern, maxResults, ); } /// search.getElementDeclarations result /// /// { /// "declarations": List /// "files": List /// } /// /// Clients may not extend, implement or mix-in this class. class SearchGetElementDeclarationsResult implements ResponseResult { /// The list of declarations. List declarations; /// The list of the paths of files with declarations. List files; SearchGetElementDeclarationsResult(this.declarations, this.files); factory SearchGetElementDeclarationsResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List declarations; if (json.containsKey('declarations')) { declarations = jsonDecoder.decodeList( '$jsonPath.declarations', json['declarations'], (String jsonPath, Object? json) => ElementDeclaration.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'declarations'); } List files; if (json.containsKey('files')) { files = jsonDecoder.decodeList( '$jsonPath.files', json['files'], (String jsonPath, Object? json) => clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString(jsonPath, json)) ?? jsonDecoder.decodeString(jsonPath, json)); } else { throw jsonDecoder.mismatch(jsonPath, 'files'); } return SearchGetElementDeclarationsResult(declarations, files); } else { throw jsonDecoder.mismatch( jsonPath, 'search.getElementDeclarations result', json); } } factory SearchGetElementDeclarationsResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchGetElementDeclarationsResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['declarations'] = declarations .map((ElementDeclaration value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['files'] = files .map((String value) => clientUriConverter?.toClientFilePath(value) ?? value) .toList(); return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchGetElementDeclarationsResult) { return listEqual(declarations, other.declarations, (ElementDeclaration a, ElementDeclaration b) => a == b) && listEqual(files, other.files, (String a, String b) => a == b); } return false; } @override int get hashCode => Object.hash( Object.hashAll(declarations), Object.hashAll(files), ); } /// search.getTypeHierarchy params /// /// { /// "file": FilePath /// "offset": int /// "superOnly": optional bool /// } /// /// Clients may not extend, implement or mix-in this class. class SearchGetTypeHierarchyParams implements RequestParams { /// The file containing the declaration or reference to the type for which a /// hierarchy is being requested. String file; /// The offset of the name of the type within the file. int offset; /// True if the client is only requesting superclasses and interfaces /// hierarchy. bool? superOnly; SearchGetTypeHierarchyParams(this.file, this.offset, {this.superOnly}); factory SearchGetTypeHierarchyParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String file; if (json.containsKey('file')) { file = clientUriConverter?.fromClientFilePath( jsonDecoder.decodeString('$jsonPath.file', json['file'])) ?? jsonDecoder.decodeString('$jsonPath.file', json['file']); } else { throw jsonDecoder.mismatch(jsonPath, 'file'); } int offset; if (json.containsKey('offset')) { offset = jsonDecoder.decodeInt('$jsonPath.offset', json['offset']); } else { throw jsonDecoder.mismatch(jsonPath, 'offset'); } bool? superOnly; if (json.containsKey('superOnly')) { superOnly = jsonDecoder.decodeBool('$jsonPath.superOnly', json['superOnly']); } return SearchGetTypeHierarchyParams(file, offset, superOnly: superOnly); } else { throw jsonDecoder.mismatch( jsonPath, 'search.getTypeHierarchy params', json); } } factory SearchGetTypeHierarchyParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return SearchGetTypeHierarchyParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['file'] = clientUriConverter?.toClientFilePath(file) ?? file; result['offset'] = offset; var superOnly = this.superOnly; if (superOnly != null) { result['superOnly'] = superOnly; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'search.getTypeHierarchy', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchGetTypeHierarchyParams) { return file == other.file && offset == other.offset && superOnly == other.superOnly; } return false; } @override int get hashCode => Object.hash( file, offset, superOnly, ); } /// search.getTypeHierarchy result /// /// { /// "hierarchyItems": optional List /// } /// /// Clients may not extend, implement or mix-in this class. class SearchGetTypeHierarchyResult implements ResponseResult { /// A list of the types in the requested hierarchy. The first element of the /// list is the item representing the type for which the hierarchy was /// requested. The index of other elements of the list is unspecified, but /// correspond to the integers used to reference supertype and subtype items /// within the items. /// /// This field will be absent if the code at the given file and offset does /// not represent a type, or if the file has not been sufficiently analyzed /// to allow a type hierarchy to be produced. List? hierarchyItems; SearchGetTypeHierarchyResult({this.hierarchyItems}); factory SearchGetTypeHierarchyResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List? hierarchyItems; if (json.containsKey('hierarchyItems')) { hierarchyItems = jsonDecoder.decodeList( '$jsonPath.hierarchyItems', json['hierarchyItems'], (String jsonPath, Object? json) => TypeHierarchyItem.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } return SearchGetTypeHierarchyResult(hierarchyItems: hierarchyItems); } else { throw jsonDecoder.mismatch( jsonPath, 'search.getTypeHierarchy result', json); } } factory SearchGetTypeHierarchyResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return SearchGetTypeHierarchyResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var hierarchyItems = this.hierarchyItems; if (hierarchyItems != null) { result['hierarchyItems'] = hierarchyItems .map((TypeHierarchyItem value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchGetTypeHierarchyResult) { return listEqual(hierarchyItems, other.hierarchyItems, (TypeHierarchyItem a, TypeHierarchyItem b) => a == b); } return false; } @override int get hashCode => Object.hashAll(hierarchyItems ?? []); } /// SearchResult /// /// { /// "location": Location /// "kind": SearchResultKind /// "isPotential": bool /// "path": List /// } /// /// Clients may not extend, implement or mix-in this class. class SearchResult implements HasToJson { /// The location of the code that matched the search criteria. Location location; /// The kind of element that was found or the kind of reference that was /// found. SearchResultKind kind; /// True if the result is a potential match but cannot be confirmed to be a /// match. For example, if all references to a method m defined in some class /// were requested, and a reference to a method m from an unknown class were /// found, it would be marked as being a potential match. bool isPotential; /// The elements that contain the result, starting with the most immediately /// enclosing ancestor and ending with the library. List path; SearchResult(this.location, this.kind, this.isPotential, this.path); factory SearchResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Location location; if (json.containsKey('location')) { location = Location.fromJson( jsonDecoder, '$jsonPath.location', json['location'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'location'); } SearchResultKind kind; if (json.containsKey('kind')) { kind = SearchResultKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } bool isPotential; if (json.containsKey('isPotential')) { isPotential = jsonDecoder.decodeBool( '$jsonPath.isPotential', json['isPotential']); } else { throw jsonDecoder.mismatch(jsonPath, 'isPotential'); } List path; if (json.containsKey('path')) { path = jsonDecoder.decodeList( '$jsonPath.path', json['path'], (String jsonPath, Object? json) => Element.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'path'); } return SearchResult(location, kind, isPotential, path); } else { throw jsonDecoder.mismatch(jsonPath, 'SearchResult', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['location'] = location.toJson(clientUriConverter: clientUriConverter); result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); result['isPotential'] = isPotential; result['path'] = path .map((Element value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchResult) { return location == other.location && kind == other.kind && isPotential == other.isPotential && listEqual(path, other.path, (Element a, Element b) => a == b); } return false; } @override int get hashCode => Object.hash( location, kind, isPotential, Object.hashAll(path), ); } /// SearchResultKind /// /// enum { /// DECLARATION /// INVOCATION /// READ /// READ_WRITE /// REFERENCE /// UNKNOWN /// WRITE /// } /// /// Clients may not extend, implement or mix-in this class. class SearchResultKind implements Enum { /// The declaration of an element. static const SearchResultKind DECLARATION = SearchResultKind._('DECLARATION'); /// The invocation of a function or method. static const SearchResultKind INVOCATION = SearchResultKind._('INVOCATION'); /// A reference to a field, parameter or variable where it is being read. static const SearchResultKind READ = SearchResultKind._('READ'); /// A reference to a field, parameter or variable where it is being read and /// written. static const SearchResultKind READ_WRITE = SearchResultKind._('READ_WRITE'); /// A reference to an element. static const SearchResultKind REFERENCE = SearchResultKind._('REFERENCE'); /// Some other kind of search result. static const SearchResultKind UNKNOWN = SearchResultKind._('UNKNOWN'); /// A reference to a field, parameter or variable where it is being written. static const SearchResultKind WRITE = SearchResultKind._('WRITE'); /// A list containing all of the enum values that are defined. static const List VALUES = [ DECLARATION, INVOCATION, READ, READ_WRITE, REFERENCE, UNKNOWN, WRITE ]; @override final String name; const SearchResultKind._(this.name); factory SearchResultKind(String name) { switch (name) { case 'DECLARATION': return DECLARATION; case 'INVOCATION': return INVOCATION; case 'READ': return READ; case 'READ_WRITE': return READ_WRITE; case 'REFERENCE': return REFERENCE; case 'UNKNOWN': return UNKNOWN; case 'WRITE': return WRITE; } throw Exception('Illegal enum value: $name'); } factory SearchResultKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return SearchResultKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'SearchResultKind', json); } @override String toString() => 'SearchResultKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// search.results params /// /// { /// "id": SearchId /// "results": List /// "isLast": bool /// } /// /// Clients may not extend, implement or mix-in this class. class SearchResultsParams implements HasToJson { /// The id associated with the search. String id; /// The search results being reported. List results; /// True if this is that last set of results that will be returned for the /// indicated search. bool isLast; SearchResultsParams(this.id, this.results, this.isLast); factory SearchResultsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } List results; if (json.containsKey('results')) { results = jsonDecoder.decodeList( '$jsonPath.results', json['results'], (String jsonPath, Object? json) => SearchResult.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'results'); } bool isLast; if (json.containsKey('isLast')) { isLast = jsonDecoder.decodeBool('$jsonPath.isLast', json['isLast']); } else { throw jsonDecoder.mismatch(jsonPath, 'isLast'); } return SearchResultsParams(id, results, isLast); } else { throw jsonDecoder.mismatch(jsonPath, 'search.results params', json); } } factory SearchResultsParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return SearchResultsParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; result['results'] = results .map((SearchResult value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); result['isLast'] = isLast; return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'search.results', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is SearchResultsParams) { return id == other.id && listEqual(results, other.results, (SearchResult a, SearchResult b) => a == b) && isLast == other.isLast; } return false; } @override int get hashCode => Object.hash( id, Object.hashAll(results), isLast, ); } /// server.cancelRequest params /// /// { /// "id": String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerCancelRequestParams implements RequestParams { /// The id of the request that should be cancelled. String id; ServerCancelRequestParams(this.id); factory ServerCancelRequestParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String id; if (json.containsKey('id')) { id = jsonDecoder.decodeString('$jsonPath.id', json['id']); } else { throw jsonDecoder.mismatch(jsonPath, 'id'); } return ServerCancelRequestParams(id); } else { throw jsonDecoder.mismatch(jsonPath, 'server.cancelRequest params', json); } } factory ServerCancelRequestParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ServerCancelRequestParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['id'] = id; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.cancelRequest', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerCancelRequestParams) { return id == other.id; } return false; } @override int get hashCode => id.hashCode; } /// server.cancelRequest result /// /// Clients may not extend, implement or mix-in this class. class ServerCancelRequestResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ServerCancelRequestResult; @override int get hashCode => 183255719; } /// server.connected params /// /// { /// "version": String /// "pid": int /// } /// /// Clients may not extend, implement or mix-in this class. class ServerConnectedParams implements HasToJson { /// The version number of the analysis server. String version; /// The process id of the analysis server process. int pid; ServerConnectedParams(this.version, this.pid); factory ServerConnectedParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String version; if (json.containsKey('version')) { version = jsonDecoder.decodeString('$jsonPath.version', json['version']); } else { throw jsonDecoder.mismatch(jsonPath, 'version'); } int pid; if (json.containsKey('pid')) { pid = jsonDecoder.decodeInt('$jsonPath.pid', json['pid']); } else { throw jsonDecoder.mismatch(jsonPath, 'pid'); } return ServerConnectedParams(version, pid); } else { throw jsonDecoder.mismatch(jsonPath, 'server.connected params', json); } } factory ServerConnectedParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return ServerConnectedParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['version'] = version; result['pid'] = pid; return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'server.connected', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerConnectedParams) { return version == other.version && pid == other.pid; } return false; } @override int get hashCode => Object.hash( version, pid, ); } /// server.error params /// /// { /// "isFatal": bool /// "message": String /// "stackTrace": String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerErrorParams implements HasToJson { /// True if the error is a fatal error, meaning that the server will shutdown /// automatically after sending this notification. bool isFatal; /// The error message indicating what kind of error was encountered. String message; /// The stack trace associated with the generation of the error, used for /// debugging the server. String stackTrace; ServerErrorParams(this.isFatal, this.message, this.stackTrace); factory ServerErrorParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { bool isFatal; if (json.containsKey('isFatal')) { isFatal = jsonDecoder.decodeBool('$jsonPath.isFatal', json['isFatal']); } else { throw jsonDecoder.mismatch(jsonPath, 'isFatal'); } String message; if (json.containsKey('message')) { message = jsonDecoder.decodeString('$jsonPath.message', json['message']); } else { throw jsonDecoder.mismatch(jsonPath, 'message'); } String stackTrace; if (json.containsKey('stackTrace')) { stackTrace = jsonDecoder.decodeString( '$jsonPath.stackTrace', json['stackTrace']); } else { throw jsonDecoder.mismatch(jsonPath, 'stackTrace'); } return ServerErrorParams(isFatal, message, stackTrace); } else { throw jsonDecoder.mismatch(jsonPath, 'server.error params', json); } } factory ServerErrorParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return ServerErrorParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['isFatal'] = isFatal; result['message'] = message; result['stackTrace'] = stackTrace; return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'server.error', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerErrorParams) { return isFatal == other.isFatal && message == other.message && stackTrace == other.stackTrace; } return false; } @override int get hashCode => Object.hash( isFatal, message, stackTrace, ); } /// server.getVersion params /// /// Clients may not extend, implement or mix-in this class. class ServerGetVersionParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.getVersion'); } @override bool operator ==(other) => other is ServerGetVersionParams; @override int get hashCode => 55877452; } /// server.getVersion result /// /// { /// "version": String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerGetVersionResult implements ResponseResult { /// The version number of the analysis server. String version; ServerGetVersionResult(this.version); factory ServerGetVersionResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String version; if (json.containsKey('version')) { version = jsonDecoder.decodeString('$jsonPath.version', json['version']); } else { throw jsonDecoder.mismatch(jsonPath, 'version'); } return ServerGetVersionResult(version); } else { throw jsonDecoder.mismatch(jsonPath, 'server.getVersion result', json); } } factory ServerGetVersionResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return ServerGetVersionResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['version'] = version; return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerGetVersionResult) { return version == other.version; } return false; } @override int get hashCode => version.hashCode; } /// ServerLogEntry /// /// { /// "time": int /// "kind": ServerLogEntryKind /// "data": String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerLogEntry implements HasToJson { /// The time (milliseconds since epoch) at which the server created this log /// entry. int time; /// The kind of the entry, used to determine how to interpret the "data" /// field. ServerLogEntryKind kind; /// The payload of the entry, the actual format is determined by the "kind" /// field. String data; ServerLogEntry(this.time, this.kind, this.data); factory ServerLogEntry.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { int time; if (json.containsKey('time')) { time = jsonDecoder.decodeInt('$jsonPath.time', json['time']); } else { throw jsonDecoder.mismatch(jsonPath, 'time'); } ServerLogEntryKind kind; if (json.containsKey('kind')) { kind = ServerLogEntryKind.fromJson( jsonDecoder, '$jsonPath.kind', json['kind'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'kind'); } String data; if (json.containsKey('data')) { data = jsonDecoder.decodeString('$jsonPath.data', json['data']); } else { throw jsonDecoder.mismatch(jsonPath, 'data'); } return ServerLogEntry(time, kind, data); } else { throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntry', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['time'] = time; result['kind'] = kind.toJson(clientUriConverter: clientUriConverter); result['data'] = data; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerLogEntry) { return time == other.time && kind == other.kind && data == other.data; } return false; } @override int get hashCode => Object.hash( time, kind, data, ); } /// ServerLogEntryKind /// /// enum { /// NOTIFICATION /// RAW /// REQUEST /// RESPONSE /// } /// /// Clients may not extend, implement or mix-in this class. class ServerLogEntryKind implements Enum { /// A notification from the server, such as "analysis.highlights". The "data" /// field contains a JSON object with abbreviated notification. static const ServerLogEntryKind NOTIFICATION = ServerLogEntryKind._('NOTIFICATION'); /// Arbitrary string, describing some event that happened in the server, e.g. /// starting a file analysis, and details which files were accessed. These /// entries are not structured, but provide context information about /// requests and notification, and can be related by "time" for further /// manual analysis. static const ServerLogEntryKind RAW = ServerLogEntryKind._('RAW'); /// A request from the client, as the server views it, e.g. /// "edit.getAssists". The "data" field contains a JSON object with /// abbreviated request. static const ServerLogEntryKind REQUEST = ServerLogEntryKind._('REQUEST'); /// Various counters and measurements related to execution of a request. The /// "data" field contains a JSON object with following fields: /// /// - "id" - the id of the request - copied from the request. /// - "method" - the method of the request, e.g. "edit.getAssists". /// - "clientRequestTime" - the time (milliseconds since epoch) at which the /// client made the request - copied from the request. /// - "serverRequestTime" - the time (milliseconds since epoch) at which the /// server received and decoded the JSON request. /// - "responseTime" - the time (milliseconds since epoch) at which the /// server created the response to be encoded into JSON and sent to the /// client. static const ServerLogEntryKind RESPONSE = ServerLogEntryKind._('RESPONSE'); /// A list containing all of the enum values that are defined. static const List VALUES = [ NOTIFICATION, RAW, REQUEST, RESPONSE ]; @override final String name; const ServerLogEntryKind._(this.name); factory ServerLogEntryKind(String name) { switch (name) { case 'NOTIFICATION': return NOTIFICATION; case 'RAW': return RAW; case 'REQUEST': return REQUEST; case 'RESPONSE': return RESPONSE; } throw Exception('Illegal enum value: $name'); } factory ServerLogEntryKind.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return ServerLogEntryKind(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'ServerLogEntryKind', json); } @override String toString() => 'ServerLogEntryKind.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// server.log params /// /// { /// "entry": ServerLogEntry /// } /// /// Clients may not extend, implement or mix-in this class. class ServerLogParams implements HasToJson { ServerLogEntry entry; ServerLogParams(this.entry); factory ServerLogParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { ServerLogEntry entry; if (json.containsKey('entry')) { entry = ServerLogEntry.fromJson( jsonDecoder, '$jsonPath.entry', json['entry'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'entry'); } return ServerLogParams(entry); } else { throw jsonDecoder.mismatch(jsonPath, 'server.log params', json); } } factory ServerLogParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return ServerLogParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['entry'] = entry.toJson(clientUriConverter: clientUriConverter); return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'server.log', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerLogParams) { return entry == other.entry; } return false; } @override int get hashCode => entry.hashCode; } /// server.openUrlRequest params /// /// { /// "url": String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerOpenUrlRequestParams implements RequestParams { /// The URL to be opened. String url; ServerOpenUrlRequestParams(this.url); factory ServerOpenUrlRequestParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String url; if (json.containsKey('url')) { url = jsonDecoder.decodeString('$jsonPath.url', json['url']); } else { throw jsonDecoder.mismatch(jsonPath, 'url'); } return ServerOpenUrlRequestParams(url); } else { throw jsonDecoder.mismatch( jsonPath, 'server.openUrlRequest params', json); } } factory ServerOpenUrlRequestParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ServerOpenUrlRequestParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['url'] = url; return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.openUrlRequest', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerOpenUrlRequestParams) { return url == other.url; } return false; } @override int get hashCode => url.hashCode; } /// server.openUrlRequest result /// /// Clients may not extend, implement or mix-in this class. class ServerOpenUrlRequestResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ServerOpenUrlRequestResult; @override int get hashCode => 561630021; } /// ServerService /// /// enum { /// LOG /// STATUS /// } /// /// Clients may not extend, implement or mix-in this class. class ServerService implements Enum { static const ServerService LOG = ServerService._('LOG'); static const ServerService STATUS = ServerService._('STATUS'); /// A list containing all of the enum values that are defined. static const List VALUES = [LOG, STATUS]; @override final String name; const ServerService._(this.name); factory ServerService(String name) { switch (name) { case 'LOG': return LOG; case 'STATUS': return STATUS; } throw Exception('Illegal enum value: $name'); } factory ServerService.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { if (json is String) { try { return ServerService(json); } catch (_) { // Fall through } } throw jsonDecoder.mismatch(jsonPath, 'ServerService', json); } @override String toString() => 'ServerService.$name'; String toJson({required ClientUriConverter? clientUriConverter}) => name; } /// server.setClientCapabilities params /// /// { /// "requests": List /// "supportsUris": optional bool /// } /// /// Clients may not extend, implement or mix-in this class. class ServerSetClientCapabilitiesParams implements RequestParams { /// The names of the requests that the server can safely send to the client. /// Only requests whose name is in the list will be sent. /// /// A request should only be included in the list if the client will /// unconditionally honor the request. /// /// The default, used before this request is received, is an empty list. /// /// The following is a list of the names of the requests that can be /// specified: /// /// - openUrlRequest /// - showMessageRequest List requests; /// True if the client supports the server sending URIs in place of file /// paths. /// /// In this mode, the server will use URIs in all protocol fields with the /// type FilePath. Returned URIs may be `file://` URIs or custom schemes. The /// client can fetch the file contents for URIs with custom schemes (and /// receive modification events) through the LSP protocol (see the "lsp" /// domain). /// /// LSP notifications are automatically enabled when the client sets this /// capability. bool? supportsUris; ServerSetClientCapabilitiesParams(this.requests, {this.supportsUris}); factory ServerSetClientCapabilitiesParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List requests; if (json.containsKey('requests')) { requests = jsonDecoder.decodeList( '$jsonPath.requests', json['requests'], jsonDecoder.decodeString); } else { throw jsonDecoder.mismatch(jsonPath, 'requests'); } bool? supportsUris; if (json.containsKey('supportsUris')) { supportsUris = jsonDecoder.decodeBool( '$jsonPath.supportsUris', json['supportsUris']); } return ServerSetClientCapabilitiesParams(requests, supportsUris: supportsUris); } else { throw jsonDecoder.mismatch( jsonPath, 'server.setClientCapabilities params', json); } } factory ServerSetClientCapabilitiesParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ServerSetClientCapabilitiesParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['requests'] = requests; var supportsUris = this.supportsUris; if (supportsUris != null) { result['supportsUris'] = supportsUris; } return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.setClientCapabilities', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerSetClientCapabilitiesParams) { return listEqual( requests, other.requests, (String a, String b) => a == b) && supportsUris == other.supportsUris; } return false; } @override int get hashCode => Object.hash( Object.hashAll(requests), supportsUris, ); } /// server.setClientCapabilities result /// /// Clients may not extend, implement or mix-in this class. class ServerSetClientCapabilitiesResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ServerSetClientCapabilitiesResult; @override int get hashCode => 806805916; } /// server.setSubscriptions params /// /// { /// "subscriptions": List /// } /// /// Clients may not extend, implement or mix-in this class. class ServerSetSubscriptionsParams implements RequestParams { /// A list of the services being subscribed to. List subscriptions; ServerSetSubscriptionsParams(this.subscriptions); factory ServerSetSubscriptionsParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { List subscriptions; if (json.containsKey('subscriptions')) { subscriptions = jsonDecoder.decodeList( '$jsonPath.subscriptions', json['subscriptions'], (String jsonPath, Object? json) => ServerService.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'subscriptions'); } return ServerSetSubscriptionsParams(subscriptions); } else { throw jsonDecoder.mismatch( jsonPath, 'server.setSubscriptions params', json); } } factory ServerSetSubscriptionsParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ServerSetSubscriptionsParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['subscriptions'] = subscriptions .map((ServerService value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.setSubscriptions', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerSetSubscriptionsParams) { return listEqual(subscriptions, other.subscriptions, (ServerService a, ServerService b) => a == b); } return false; } @override int get hashCode => Object.hashAll(subscriptions); } /// server.setSubscriptions result /// /// Clients may not extend, implement or mix-in this class. class ServerSetSubscriptionsResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ServerSetSubscriptionsResult; @override int get hashCode => 748820900; } /// server.showMessageRequest params /// /// { /// "type": MessageType /// "message": String /// "actions": List /// } /// /// Clients may not extend, implement or mix-in this class. class ServerShowMessageRequestParams implements RequestParams { /// The type of the message. MessageType type; /// The message to be displayed. String message; /// The labels of the buttons by which the user can dismiss the message. List actions; ServerShowMessageRequestParams(this.type, this.message, this.actions); factory ServerShowMessageRequestParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { MessageType type; if (json.containsKey('type')) { type = MessageType.fromJson(jsonDecoder, '$jsonPath.type', json['type'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'type'); } String message; if (json.containsKey('message')) { message = jsonDecoder.decodeString('$jsonPath.message', json['message']); } else { throw jsonDecoder.mismatch(jsonPath, 'message'); } List actions; if (json.containsKey('actions')) { actions = jsonDecoder.decodeList( '$jsonPath.actions', json['actions'], (String jsonPath, Object? json) => MessageAction.fromJson( jsonDecoder, jsonPath, json, clientUriConverter: clientUriConverter)); } else { throw jsonDecoder.mismatch(jsonPath, 'actions'); } return ServerShowMessageRequestParams(type, message, actions); } else { throw jsonDecoder.mismatch( jsonPath, 'server.showMessageRequest params', json); } } factory ServerShowMessageRequestParams.fromRequest(Request request, {required ClientUriConverter? clientUriConverter}) { return ServerShowMessageRequestParams.fromJson( RequestDecoder(request), 'params', request.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['type'] = type.toJson(clientUriConverter: clientUriConverter); result['message'] = message; result['actions'] = actions .map((MessageAction value) => value.toJson(clientUriConverter: clientUriConverter)) .toList(); return result; } @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.showMessageRequest', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerShowMessageRequestParams) { return type == other.type && message == other.message && listEqual(actions, other.actions, (MessageAction a, MessageAction b) => a == b); } return false; } @override int get hashCode => Object.hash( type, message, Object.hashAll(actions), ); } /// server.showMessageRequest result /// /// { /// "action": optional String /// } /// /// Clients may not extend, implement or mix-in this class. class ServerShowMessageRequestResult implements ResponseResult { /// The label of the action that was selected by the user. May be omitted or /// `null` if the user dismissed the message without clicking an action /// button. String? action; ServerShowMessageRequestResult({this.action}); factory ServerShowMessageRequestResult.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { String? action; if (json.containsKey('action')) { action = jsonDecoder.decodeString('$jsonPath.action', json['action']); } return ServerShowMessageRequestResult(action: action); } else { throw jsonDecoder.mismatch( jsonPath, 'server.showMessageRequest result', json); } } factory ServerShowMessageRequestResult.fromResponse(Response response, {required ClientUriConverter? clientUriConverter}) { return ServerShowMessageRequestResult.fromJson( ResponseDecoder(REQUEST_ID_REFACTORING_KINDS.remove(response.id)), 'result', response.result, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var action = this.action; if (action != null) { result['action'] = action; } return result; } @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id, result: toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerShowMessageRequestResult) { return action == other.action; } return false; } @override int get hashCode => action.hashCode; } /// server.shutdown params /// /// Clients may not extend, implement or mix-in this class. class ServerShutdownParams implements RequestParams { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Request toRequest(String id, {required ClientUriConverter? clientUriConverter}) { return Request(id, 'server.shutdown'); } @override bool operator ==(other) => other is ServerShutdownParams; @override int get hashCode => 366630911; } /// server.shutdown result /// /// Clients may not extend, implement or mix-in this class. class ServerShutdownResult implements ResponseResult { @override Map toJson( {required ClientUriConverter? clientUriConverter}) => {}; @override Response toResponse(String id, {required ClientUriConverter? clientUriConverter}) { return Response(id); } @override bool operator ==(other) => other is ServerShutdownResult; @override int get hashCode => 193626532; } /// server.status params /// /// { /// "analysis": optional AnalysisStatus /// "pub": optional PubStatus /// } /// /// Clients may not extend, implement or mix-in this class. class ServerStatusParams implements HasToJson { /// The current status of analysis, including whether analysis is being /// performed and if so what is being analyzed. AnalysisStatus? analysis; /// The current status of pub execution, indicating whether we are currently /// running pub. /// /// Note: this status type is deprecated, and is no longer sent by the /// server. PubStatus? pub; ServerStatusParams({this.analysis, this.pub}); factory ServerStatusParams.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { AnalysisStatus? analysis; if (json.containsKey('analysis')) { analysis = AnalysisStatus.fromJson( jsonDecoder, '$jsonPath.analysis', json['analysis'], clientUriConverter: clientUriConverter); } PubStatus? pub; if (json.containsKey('pub')) { pub = PubStatus.fromJson(jsonDecoder, '$jsonPath.pub', json['pub'], clientUriConverter: clientUriConverter); } return ServerStatusParams(analysis: analysis, pub: pub); } else { throw jsonDecoder.mismatch(jsonPath, 'server.status params', json); } } factory ServerStatusParams.fromNotification(Notification notification, {required ClientUriConverter? clientUriConverter}) { return ServerStatusParams.fromJson( ResponseDecoder(null), 'params', notification.params, clientUriConverter: clientUriConverter); } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; var analysis = this.analysis; if (analysis != null) { result['analysis'] = analysis.toJson(clientUriConverter: clientUriConverter); } var pub = this.pub; if (pub != null) { result['pub'] = pub.toJson(clientUriConverter: clientUriConverter); } return result; } Notification toNotification( {required ClientUriConverter? clientUriConverter}) { return Notification( 'server.status', toJson(clientUriConverter: clientUriConverter)); } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is ServerStatusParams) { return analysis == other.analysis && pub == other.pub; } return false; } @override int get hashCode => Object.hash( analysis, pub, ); } /// TypeHierarchyItem /// /// { /// "classElement": Element /// "displayName": optional String /// "memberElement": optional Element /// "superclass": optional int /// "interfaces": List /// "mixins": List /// "subclasses": List /// } /// /// Clients may not extend, implement or mix-in this class. class TypeHierarchyItem implements HasToJson { /// The class element represented by this item. Element classElement; /// The name to be displayed for the class. This field will be omitted if the /// display name is the same as the name of the element. The display name is /// different if there is additional type information to be displayed, such /// as type arguments. String? displayName; /// The member in the class corresponding to the member on which the /// hierarchy was requested. This field will be omitted if the hierarchy was /// not requested for a member or if the class does not have a corresponding /// member. Element? memberElement; /// The index of the item representing the superclass of this class. This /// field will be omitted if this item represents the class Object. int? superclass; /// The indexes of the items representing the interfaces implemented by this /// class. The list will be empty if there are no implemented interfaces. List interfaces; /// The indexes of the items representing the mixins referenced by this /// class. The list will be empty if there are no classes mixed into this /// class. List mixins; /// The indexes of the items representing the subtypes of this class. The /// list will be empty if there are no subtypes or if this item represents a /// supertype of the pivot type. List subclasses; TypeHierarchyItem(this.classElement, {this.displayName, this.memberElement, this.superclass, List? interfaces, List? mixins, List? subclasses}) : interfaces = interfaces ?? [], mixins = mixins ?? [], subclasses = subclasses ?? []; factory TypeHierarchyItem.fromJson( JsonDecoder jsonDecoder, String jsonPath, Object? json, {required ClientUriConverter? clientUriConverter}) { json ??= {}; if (json is Map) { Element classElement; if (json.containsKey('classElement')) { classElement = Element.fromJson( jsonDecoder, '$jsonPath.classElement', json['classElement'], clientUriConverter: clientUriConverter); } else { throw jsonDecoder.mismatch(jsonPath, 'classElement'); } String? displayName; if (json.containsKey('displayName')) { displayName = jsonDecoder.decodeString( '$jsonPath.displayName', json['displayName']); } Element? memberElement; if (json.containsKey('memberElement')) { memberElement = Element.fromJson( jsonDecoder, '$jsonPath.memberElement', json['memberElement'], clientUriConverter: clientUriConverter); } int? superclass; if (json.containsKey('superclass')) { superclass = jsonDecoder.decodeInt('$jsonPath.superclass', json['superclass']); } List interfaces; if (json.containsKey('interfaces')) { interfaces = jsonDecoder.decodeList( '$jsonPath.interfaces', json['interfaces'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'interfaces'); } List mixins; if (json.containsKey('mixins')) { mixins = jsonDecoder.decodeList( '$jsonPath.mixins', json['mixins'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'mixins'); } List subclasses; if (json.containsKey('subclasses')) { subclasses = jsonDecoder.decodeList( '$jsonPath.subclasses', json['subclasses'], jsonDecoder.decodeInt); } else { throw jsonDecoder.mismatch(jsonPath, 'subclasses'); } return TypeHierarchyItem(classElement, displayName: displayName, memberElement: memberElement, superclass: superclass, interfaces: interfaces, mixins: mixins, subclasses: subclasses); } else { throw jsonDecoder.mismatch(jsonPath, 'TypeHierarchyItem', json); } } @override Map toJson( {required ClientUriConverter? clientUriConverter}) { var result = {}; result['classElement'] = classElement.toJson(clientUriConverter: clientUriConverter); var displayName = this.displayName; if (displayName != null) { result['displayName'] = displayName; } var memberElement = this.memberElement; if (memberElement != null) { result['memberElement'] = memberElement.toJson(clientUriConverter: clientUriConverter); } var superclass = this.superclass; if (superclass != null) { result['superclass'] = superclass; } result['interfaces'] = interfaces; result['mixins'] = mixins; result['subclasses'] = subclasses; return result; } @override String toString() => json.encode(toJson(clientUriConverter: null)); @override bool operator ==(other) { if (other is TypeHierarchyItem) { return classElement == other.classElement && displayName == other.displayName && memberElement == other.memberElement && superclass == other.superclass && listEqual(interfaces, other.interfaces, (int a, int b) => a == b) && listEqual(mixins, other.mixins, (int a, int b) => a == b) && listEqual(subclasses, other.subclasses, (int a, int b) => a == b); } return false; } @override int get hashCode => Object.hash( classElement, displayName, memberElement, superclass, Object.hashAll(interfaces), Object.hashAll(mixins), Object.hashAll(subclasses), ); }