| // Copyright (c) 2023, 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 code was auto-generated by tool/dap/generate_all.dart; do not hand-edit! |
| |
| // ignore_for_file: prefer_void_to_null |
| |
| import 'protocol_common.dart'; |
| import 'protocol_special.dart'; |
| |
| /// Arguments for `attach` request. Additional attributes are implementation |
| /// specific. |
| class AttachRequestArguments extends RequestArguments { |
| /// Arbitrary data from the previous, restarted session. |
| /// The data is sent as the `restart` attribute of the `terminated` event. |
| /// The client should leave the data intact. |
| final Object? restart; |
| |
| static AttachRequestArguments fromJson(Map<String, Object?> obj) => |
| AttachRequestArguments.fromMap(obj); |
| |
| AttachRequestArguments({ |
| this.restart, |
| }); |
| |
| AttachRequestArguments.fromMap(Map<String, Object?> obj) |
| : restart = obj['__restart']; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (restart != null) '__restart': restart, |
| }; |
| } |
| |
| /// Response to `attach` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class AttachResponse extends Response { |
| static AttachResponse fromJson(Map<String, Object?> obj) => |
| AttachResponse.fromMap(obj); |
| |
| AttachResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| AttachResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Information about a breakpoint created in `setBreakpoints`, |
| /// `setFunctionBreakpoints`, `setInstructionBreakpoints`, or |
| /// `setDataBreakpoints` requests. |
| class Breakpoint { |
| /// Start position of the source range covered by the breakpoint. It is |
| /// measured in UTF-16 code units and the client capability `columnsStartAt1` |
| /// determines whether it is 0- or 1-based. |
| final int? column; |
| |
| /// End position of the source range covered by the breakpoint. It is measured |
| /// in UTF-16 code units and the client capability `columnsStartAt1` |
| /// determines whether it is 0- or 1-based. |
| /// If no end line is given, then the end column is assumed to be in the start |
| /// line. |
| final int? endColumn; |
| |
| /// The end line of the actual range covered by the breakpoint. |
| final int? endLine; |
| |
| /// The identifier for the breakpoint. It is needed if breakpoint events are |
| /// used to update or remove breakpoints. |
| final int? id; |
| |
| /// A memory reference to where the breakpoint is set. |
| final String? instructionReference; |
| |
| /// The start line of the actual range covered by the breakpoint. |
| final int? line; |
| |
| /// A message about the state of the breakpoint. |
| /// This is shown to the user and can be used to explain why a breakpoint |
| /// could not be verified. |
| final String? message; |
| |
| /// The offset from the instruction reference. |
| /// This can be negative. |
| final int? offset; |
| |
| /// The source where the breakpoint is located. |
| final Source? source; |
| |
| /// If true, the breakpoint could be set (but not necessarily at the desired |
| /// location). |
| final bool verified; |
| |
| static Breakpoint fromJson(Map<String, Object?> obj) => |
| Breakpoint.fromMap(obj); |
| |
| Breakpoint({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| this.id, |
| this.instructionReference, |
| this.line, |
| this.message, |
| this.offset, |
| this.source, |
| required this.verified, |
| }); |
| |
| Breakpoint.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| id = obj['id'] as int?, |
| instructionReference = obj['instructionReference'] as String?, |
| line = obj['line'] as int?, |
| message = obj['message'] as String?, |
| offset = obj['offset'] as int?, |
| source = obj['source'] == null |
| ? null |
| : Source.fromJson(obj['source'] as Map<String, Object?>), |
| verified = obj['verified'] as bool; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['id'] is! int?) { |
| return false; |
| } |
| if (obj['instructionReference'] is! String?) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| if (obj['verified'] is! bool) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| if (id != null) 'id': id, |
| if (instructionReference != null) |
| 'instructionReference': instructionReference, |
| if (line != null) 'line': line, |
| if (message != null) 'message': message, |
| if (offset != null) 'offset': offset, |
| if (source != null) 'source': source, |
| 'verified': verified, |
| }; |
| } |
| |
| /// Properties of a breakpoint location returned from the `breakpointLocations` |
| /// request. |
| class BreakpointLocation { |
| /// The start position of a breakpoint location. Position is measured in |
| /// UTF-16 code units and the client capability `columnsStartAt1` determines |
| /// whether it is 0- or 1-based. |
| final int? column; |
| |
| /// The end position of a breakpoint location (if the location covers a |
| /// range). Position is measured in UTF-16 code units and the client |
| /// capability `columnsStartAt1` determines whether it is 0- or 1-based. |
| final int? endColumn; |
| |
| /// The end line of breakpoint location if the location covers a range. |
| final int? endLine; |
| |
| /// Start line of breakpoint location. |
| final int line; |
| |
| static BreakpointLocation fromJson(Map<String, Object?> obj) => |
| BreakpointLocation.fromMap(obj); |
| |
| BreakpointLocation({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.line, |
| }); |
| |
| BreakpointLocation.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| line = obj['line'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'line': line, |
| }; |
| } |
| |
| /// Arguments for `breakpointLocations` request. |
| class BreakpointLocationsArguments extends RequestArguments { |
| /// Start position within `line` to search possible breakpoint locations in. |
| /// It is measured in UTF-16 code units and the client capability |
| /// `columnsStartAt1` determines whether it is 0- or 1-based. If no column is |
| /// given, the first position in the start line is assumed. |
| final int? column; |
| |
| /// End position within `endLine` to search possible breakpoint locations in. |
| /// It is measured in UTF-16 code units and the client capability |
| /// `columnsStartAt1` determines whether it is 0- or 1-based. If no end column |
| /// is given, the last position in the end line is assumed. |
| final int? endColumn; |
| |
| /// End line of range to search possible breakpoint locations in. If no end |
| /// line is given, then the end line is assumed to be the start line. |
| final int? endLine; |
| |
| /// Start line of range to search possible breakpoint locations in. If only |
| /// the line is specified, the request returns all possible locations in that |
| /// line. |
| final int line; |
| |
| /// The source location of the breakpoints; either `source.path` or |
| /// `source.reference` must be specified. |
| final Source source; |
| |
| static BreakpointLocationsArguments fromJson(Map<String, Object?> obj) => |
| BreakpointLocationsArguments.fromMap(obj); |
| |
| BreakpointLocationsArguments({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.line, |
| required this.source, |
| }); |
| |
| BreakpointLocationsArguments.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| line = obj['line'] as int, |
| source = Source.fromJson(obj['source'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'line': line, |
| 'source': source, |
| }; |
| } |
| |
| /// Response to `breakpointLocations` request. |
| /// Contains possible locations for source breakpoints. |
| class BreakpointLocationsResponse extends Response { |
| static BreakpointLocationsResponse fromJson(Map<String, Object?> obj) => |
| BreakpointLocationsResponse.fromMap(obj); |
| |
| BreakpointLocationsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| BreakpointLocationsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `cancel` request. |
| class CancelArguments extends RequestArguments { |
| /// The ID (attribute `progressId`) of the progress to cancel. If missing no |
| /// progress is cancelled. |
| /// Both a `requestId` and a `progressId` can be specified in one request. |
| final String? progressId; |
| |
| /// The ID (attribute `seq`) of the request to cancel. If missing no request |
| /// is cancelled. |
| /// Both a `requestId` and a `progressId` can be specified in one request. |
| final int? requestId; |
| |
| static CancelArguments fromJson(Map<String, Object?> obj) => |
| CancelArguments.fromMap(obj); |
| |
| CancelArguments({ |
| this.progressId, |
| this.requestId, |
| }); |
| |
| CancelArguments.fromMap(Map<String, Object?> obj) |
| : progressId = obj['progressId'] as String?, |
| requestId = obj['requestId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['progressId'] is! String?) { |
| return false; |
| } |
| if (obj['requestId'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (progressId != null) 'progressId': progressId, |
| if (requestId != null) 'requestId': requestId, |
| }; |
| } |
| |
| /// Response to `cancel` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class CancelResponse extends Response { |
| static CancelResponse fromJson(Map<String, Object?> obj) => |
| CancelResponse.fromMap(obj); |
| |
| CancelResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| CancelResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Information about the capabilities of a debug adapter. |
| class Capabilities { |
| /// The set of additional module information exposed by the debug adapter. |
| final List<ColumnDescriptor>? additionalModuleColumns; |
| |
| /// The set of characters that should trigger completion in a REPL. If not |
| /// specified, the UI should assume the `.` character. |
| final List<String>? completionTriggerCharacters; |
| |
| /// Available exception filter options for the `setExceptionBreakpoints` |
| /// request. |
| final List<ExceptionBreakpointsFilter>? exceptionBreakpointFilters; |
| |
| /// The debug adapter supports the `suspendDebuggee` attribute on the |
| /// `disconnect` request. |
| final bool? supportSuspendDebuggee; |
| |
| /// The debug adapter supports the `terminateDebuggee` attribute on the |
| /// `disconnect` request. |
| final bool? supportTerminateDebuggee; |
| |
| /// Checksum algorithms supported by the debug adapter. |
| final List<ChecksumAlgorithm>? supportedChecksumAlgorithms; |
| |
| /// The debug adapter supports the `breakpointLocations` request. |
| final bool? supportsBreakpointLocationsRequest; |
| |
| /// The debug adapter supports the `cancel` request. |
| final bool? supportsCancelRequest; |
| |
| /// The debug adapter supports the `clipboard` context value in the `evaluate` |
| /// request. |
| final bool? supportsClipboardContext; |
| |
| /// The debug adapter supports the `completions` request. |
| final bool? supportsCompletionsRequest; |
| |
| /// The debug adapter supports conditional breakpoints. |
| final bool? supportsConditionalBreakpoints; |
| |
| /// The debug adapter supports the `configurationDone` request. |
| final bool? supportsConfigurationDoneRequest; |
| |
| /// The debug adapter supports data breakpoints. |
| final bool? supportsDataBreakpoints; |
| |
| /// The debug adapter supports the delayed loading of parts of the stack, |
| /// which requires that both the `startFrame` and `levels` arguments and the |
| /// `totalFrames` result of the `stackTrace` request are supported. |
| final bool? supportsDelayedStackTraceLoading; |
| |
| /// The debug adapter supports the `disassemble` request. |
| final bool? supportsDisassembleRequest; |
| |
| /// The debug adapter supports a (side effect free) `evaluate` request for |
| /// data hovers. |
| final bool? supportsEvaluateForHovers; |
| |
| /// The debug adapter supports `filterOptions` as an argument on the |
| /// `setExceptionBreakpoints` request. |
| final bool? supportsExceptionFilterOptions; |
| |
| /// The debug adapter supports the `exceptionInfo` request. |
| final bool? supportsExceptionInfoRequest; |
| |
| /// The debug adapter supports `exceptionOptions` on the |
| /// `setExceptionBreakpoints` request. |
| final bool? supportsExceptionOptions; |
| |
| /// The debug adapter supports function breakpoints. |
| final bool? supportsFunctionBreakpoints; |
| |
| /// The debug adapter supports the `gotoTargets` request. |
| final bool? supportsGotoTargetsRequest; |
| |
| /// The debug adapter supports breakpoints that break execution after a |
| /// specified number of hits. |
| final bool? supportsHitConditionalBreakpoints; |
| |
| /// The debug adapter supports adding breakpoints based on instruction |
| /// references. |
| final bool? supportsInstructionBreakpoints; |
| |
| /// The debug adapter supports the `loadedSources` request. |
| final bool? supportsLoadedSourcesRequest; |
| |
| /// The debug adapter supports log points by interpreting the `logMessage` |
| /// attribute of the `SourceBreakpoint`. |
| final bool? supportsLogPoints; |
| |
| /// The debug adapter supports the `modules` request. |
| final bool? supportsModulesRequest; |
| |
| /// The debug adapter supports the `readMemory` request. |
| final bool? supportsReadMemoryRequest; |
| |
| /// The debug adapter supports restarting a frame. |
| final bool? supportsRestartFrame; |
| |
| /// The debug adapter supports the `restart` request. In this case a client |
| /// should not implement `restart` by terminating and relaunching the adapter |
| /// but by calling the `restart` request. |
| final bool? supportsRestartRequest; |
| |
| /// The debug adapter supports the `setExpression` request. |
| final bool? supportsSetExpression; |
| |
| /// The debug adapter supports setting a variable to a value. |
| final bool? supportsSetVariable; |
| |
| /// The debug adapter supports the `singleThread` property on the execution |
| /// requests (`continue`, `next`, `stepIn`, `stepOut`, `reverseContinue`, |
| /// `stepBack`). |
| final bool? supportsSingleThreadExecutionRequests; |
| |
| /// The debug adapter supports stepping back via the `stepBack` and |
| /// `reverseContinue` requests. |
| final bool? supportsStepBack; |
| |
| /// The debug adapter supports the `stepInTargets` request. |
| final bool? supportsStepInTargetsRequest; |
| |
| /// The debug adapter supports stepping granularities (argument `granularity`) |
| /// for the stepping requests. |
| final bool? supportsSteppingGranularity; |
| |
| /// The debug adapter supports the `terminate` request. |
| final bool? supportsTerminateRequest; |
| |
| /// The debug adapter supports the `terminateThreads` request. |
| final bool? supportsTerminateThreadsRequest; |
| |
| /// The debug adapter supports a `format` attribute on the `stackTrace`, |
| /// `variables`, and `evaluate` requests. |
| final bool? supportsValueFormattingOptions; |
| |
| /// The debug adapter supports the `writeMemory` request. |
| final bool? supportsWriteMemoryRequest; |
| |
| static Capabilities fromJson(Map<String, Object?> obj) => |
| Capabilities.fromMap(obj); |
| |
| Capabilities({ |
| this.additionalModuleColumns, |
| this.completionTriggerCharacters, |
| this.exceptionBreakpointFilters, |
| this.supportSuspendDebuggee, |
| this.supportTerminateDebuggee, |
| this.supportedChecksumAlgorithms, |
| this.supportsBreakpointLocationsRequest, |
| this.supportsCancelRequest, |
| this.supportsClipboardContext, |
| this.supportsCompletionsRequest, |
| this.supportsConditionalBreakpoints, |
| this.supportsConfigurationDoneRequest, |
| this.supportsDataBreakpoints, |
| this.supportsDelayedStackTraceLoading, |
| this.supportsDisassembleRequest, |
| this.supportsEvaluateForHovers, |
| this.supportsExceptionFilterOptions, |
| this.supportsExceptionInfoRequest, |
| this.supportsExceptionOptions, |
| this.supportsFunctionBreakpoints, |
| this.supportsGotoTargetsRequest, |
| this.supportsHitConditionalBreakpoints, |
| this.supportsInstructionBreakpoints, |
| this.supportsLoadedSourcesRequest, |
| this.supportsLogPoints, |
| this.supportsModulesRequest, |
| this.supportsReadMemoryRequest, |
| this.supportsRestartFrame, |
| this.supportsRestartRequest, |
| this.supportsSetExpression, |
| this.supportsSetVariable, |
| this.supportsSingleThreadExecutionRequests, |
| this.supportsStepBack, |
| this.supportsStepInTargetsRequest, |
| this.supportsSteppingGranularity, |
| this.supportsTerminateRequest, |
| this.supportsTerminateThreadsRequest, |
| this.supportsValueFormattingOptions, |
| this.supportsWriteMemoryRequest, |
| }); |
| |
| Capabilities.fromMap(Map<String, Object?> obj) |
| : additionalModuleColumns = (obj['additionalModuleColumns'] as List?) |
| ?.map((item) => |
| ColumnDescriptor.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| completionTriggerCharacters = |
| (obj['completionTriggerCharacters'] as List?) |
| ?.map((item) => item as String) |
| .toList(), |
| exceptionBreakpointFilters = |
| (obj['exceptionBreakpointFilters'] as List?) |
| ?.map((item) => ExceptionBreakpointsFilter.fromJson( |
| item as Map<String, Object?>)) |
| .toList(), |
| supportSuspendDebuggee = obj['supportSuspendDebuggee'] as bool?, |
| supportTerminateDebuggee = obj['supportTerminateDebuggee'] as bool?, |
| supportedChecksumAlgorithms = |
| (obj['supportedChecksumAlgorithms'] as List?) |
| ?.map((item) => item as ChecksumAlgorithm) |
| .toList(), |
| supportsBreakpointLocationsRequest = |
| obj['supportsBreakpointLocationsRequest'] as bool?, |
| supportsCancelRequest = obj['supportsCancelRequest'] as bool?, |
| supportsClipboardContext = obj['supportsClipboardContext'] as bool?, |
| supportsCompletionsRequest = obj['supportsCompletionsRequest'] as bool?, |
| supportsConditionalBreakpoints = |
| obj['supportsConditionalBreakpoints'] as bool?, |
| supportsConfigurationDoneRequest = |
| obj['supportsConfigurationDoneRequest'] as bool?, |
| supportsDataBreakpoints = obj['supportsDataBreakpoints'] as bool?, |
| supportsDelayedStackTraceLoading = |
| obj['supportsDelayedStackTraceLoading'] as bool?, |
| supportsDisassembleRequest = obj['supportsDisassembleRequest'] as bool?, |
| supportsEvaluateForHovers = obj['supportsEvaluateForHovers'] as bool?, |
| supportsExceptionFilterOptions = |
| obj['supportsExceptionFilterOptions'] as bool?, |
| supportsExceptionInfoRequest = |
| obj['supportsExceptionInfoRequest'] as bool?, |
| supportsExceptionOptions = obj['supportsExceptionOptions'] as bool?, |
| supportsFunctionBreakpoints = |
| obj['supportsFunctionBreakpoints'] as bool?, |
| supportsGotoTargetsRequest = obj['supportsGotoTargetsRequest'] as bool?, |
| supportsHitConditionalBreakpoints = |
| obj['supportsHitConditionalBreakpoints'] as bool?, |
| supportsInstructionBreakpoints = |
| obj['supportsInstructionBreakpoints'] as bool?, |
| supportsLoadedSourcesRequest = |
| obj['supportsLoadedSourcesRequest'] as bool?, |
| supportsLogPoints = obj['supportsLogPoints'] as bool?, |
| supportsModulesRequest = obj['supportsModulesRequest'] as bool?, |
| supportsReadMemoryRequest = obj['supportsReadMemoryRequest'] as bool?, |
| supportsRestartFrame = obj['supportsRestartFrame'] as bool?, |
| supportsRestartRequest = obj['supportsRestartRequest'] as bool?, |
| supportsSetExpression = obj['supportsSetExpression'] as bool?, |
| supportsSetVariable = obj['supportsSetVariable'] as bool?, |
| supportsSingleThreadExecutionRequests = |
| obj['supportsSingleThreadExecutionRequests'] as bool?, |
| supportsStepBack = obj['supportsStepBack'] as bool?, |
| supportsStepInTargetsRequest = |
| obj['supportsStepInTargetsRequest'] as bool?, |
| supportsSteppingGranularity = |
| obj['supportsSteppingGranularity'] as bool?, |
| supportsTerminateRequest = obj['supportsTerminateRequest'] as bool?, |
| supportsTerminateThreadsRequest = |
| obj['supportsTerminateThreadsRequest'] as bool?, |
| supportsValueFormattingOptions = |
| obj['supportsValueFormattingOptions'] as bool?, |
| supportsWriteMemoryRequest = obj['supportsWriteMemoryRequest'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['additionalModuleColumns'] is! List || |
| (obj['additionalModuleColumns'] |
| .any((item) => !ColumnDescriptor.canParse(item))))) { |
| return false; |
| } |
| if ((obj['completionTriggerCharacters'] is! List || |
| (obj['completionTriggerCharacters'].any((item) => item is! String)))) { |
| return false; |
| } |
| if ((obj['exceptionBreakpointFilters'] is! List || |
| (obj['exceptionBreakpointFilters'] |
| .any((item) => !ExceptionBreakpointsFilter.canParse(item))))) { |
| return false; |
| } |
| if (obj['supportSuspendDebuggee'] is! bool?) { |
| return false; |
| } |
| if (obj['supportTerminateDebuggee'] is! bool?) { |
| return false; |
| } |
| if ((obj['supportedChecksumAlgorithms'] is! List || |
| (obj['supportedChecksumAlgorithms'] |
| .any((item) => item is! ChecksumAlgorithm)))) { |
| return false; |
| } |
| if (obj['supportsBreakpointLocationsRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsCancelRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsClipboardContext'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsCompletionsRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsConditionalBreakpoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsConfigurationDoneRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsDataBreakpoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsDelayedStackTraceLoading'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsDisassembleRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsEvaluateForHovers'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsExceptionFilterOptions'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsExceptionInfoRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsExceptionOptions'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsFunctionBreakpoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsGotoTargetsRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsHitConditionalBreakpoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsInstructionBreakpoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsLoadedSourcesRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsLogPoints'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsModulesRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsReadMemoryRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsRestartFrame'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsRestartRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsSetExpression'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsSetVariable'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsSingleThreadExecutionRequests'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsStepBack'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsStepInTargetsRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsSteppingGranularity'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsTerminateRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsTerminateThreadsRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsValueFormattingOptions'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsWriteMemoryRequest'] is! bool?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (additionalModuleColumns != null) |
| 'additionalModuleColumns': additionalModuleColumns, |
| if (completionTriggerCharacters != null) |
| 'completionTriggerCharacters': completionTriggerCharacters, |
| if (exceptionBreakpointFilters != null) |
| 'exceptionBreakpointFilters': exceptionBreakpointFilters, |
| if (supportSuspendDebuggee != null) |
| 'supportSuspendDebuggee': supportSuspendDebuggee, |
| if (supportTerminateDebuggee != null) |
| 'supportTerminateDebuggee': supportTerminateDebuggee, |
| if (supportedChecksumAlgorithms != null) |
| 'supportedChecksumAlgorithms': supportedChecksumAlgorithms, |
| if (supportsBreakpointLocationsRequest != null) |
| 'supportsBreakpointLocationsRequest': |
| supportsBreakpointLocationsRequest, |
| if (supportsCancelRequest != null) |
| 'supportsCancelRequest': supportsCancelRequest, |
| if (supportsClipboardContext != null) |
| 'supportsClipboardContext': supportsClipboardContext, |
| if (supportsCompletionsRequest != null) |
| 'supportsCompletionsRequest': supportsCompletionsRequest, |
| if (supportsConditionalBreakpoints != null) |
| 'supportsConditionalBreakpoints': supportsConditionalBreakpoints, |
| if (supportsConfigurationDoneRequest != null) |
| 'supportsConfigurationDoneRequest': supportsConfigurationDoneRequest, |
| if (supportsDataBreakpoints != null) |
| 'supportsDataBreakpoints': supportsDataBreakpoints, |
| if (supportsDelayedStackTraceLoading != null) |
| 'supportsDelayedStackTraceLoading': supportsDelayedStackTraceLoading, |
| if (supportsDisassembleRequest != null) |
| 'supportsDisassembleRequest': supportsDisassembleRequest, |
| if (supportsEvaluateForHovers != null) |
| 'supportsEvaluateForHovers': supportsEvaluateForHovers, |
| if (supportsExceptionFilterOptions != null) |
| 'supportsExceptionFilterOptions': supportsExceptionFilterOptions, |
| if (supportsExceptionInfoRequest != null) |
| 'supportsExceptionInfoRequest': supportsExceptionInfoRequest, |
| if (supportsExceptionOptions != null) |
| 'supportsExceptionOptions': supportsExceptionOptions, |
| if (supportsFunctionBreakpoints != null) |
| 'supportsFunctionBreakpoints': supportsFunctionBreakpoints, |
| if (supportsGotoTargetsRequest != null) |
| 'supportsGotoTargetsRequest': supportsGotoTargetsRequest, |
| if (supportsHitConditionalBreakpoints != null) |
| 'supportsHitConditionalBreakpoints': |
| supportsHitConditionalBreakpoints, |
| if (supportsInstructionBreakpoints != null) |
| 'supportsInstructionBreakpoints': supportsInstructionBreakpoints, |
| if (supportsLoadedSourcesRequest != null) |
| 'supportsLoadedSourcesRequest': supportsLoadedSourcesRequest, |
| if (supportsLogPoints != null) 'supportsLogPoints': supportsLogPoints, |
| if (supportsModulesRequest != null) |
| 'supportsModulesRequest': supportsModulesRequest, |
| if (supportsReadMemoryRequest != null) |
| 'supportsReadMemoryRequest': supportsReadMemoryRequest, |
| if (supportsRestartFrame != null) |
| 'supportsRestartFrame': supportsRestartFrame, |
| if (supportsRestartRequest != null) |
| 'supportsRestartRequest': supportsRestartRequest, |
| if (supportsSetExpression != null) |
| 'supportsSetExpression': supportsSetExpression, |
| if (supportsSetVariable != null) |
| 'supportsSetVariable': supportsSetVariable, |
| if (supportsSingleThreadExecutionRequests != null) |
| 'supportsSingleThreadExecutionRequests': |
| supportsSingleThreadExecutionRequests, |
| if (supportsStepBack != null) 'supportsStepBack': supportsStepBack, |
| if (supportsStepInTargetsRequest != null) |
| 'supportsStepInTargetsRequest': supportsStepInTargetsRequest, |
| if (supportsSteppingGranularity != null) |
| 'supportsSteppingGranularity': supportsSteppingGranularity, |
| if (supportsTerminateRequest != null) |
| 'supportsTerminateRequest': supportsTerminateRequest, |
| if (supportsTerminateThreadsRequest != null) |
| 'supportsTerminateThreadsRequest': supportsTerminateThreadsRequest, |
| if (supportsValueFormattingOptions != null) |
| 'supportsValueFormattingOptions': supportsValueFormattingOptions, |
| if (supportsWriteMemoryRequest != null) |
| 'supportsWriteMemoryRequest': supportsWriteMemoryRequest, |
| }; |
| } |
| |
| /// The checksum of an item calculated by the specified algorithm. |
| class Checksum { |
| /// The algorithm used to calculate this checksum. |
| final ChecksumAlgorithm algorithm; |
| |
| /// Value of the checksum, encoded as a hexadecimal value. |
| final String checksum; |
| |
| static Checksum fromJson(Map<String, Object?> obj) => Checksum.fromMap(obj); |
| |
| Checksum({ |
| required this.algorithm, |
| required this.checksum, |
| }); |
| |
| Checksum.fromMap(Map<String, Object?> obj) |
| : algorithm = obj['algorithm'] as ChecksumAlgorithm, |
| checksum = obj['checksum'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['algorithm'] is! ChecksumAlgorithm) { |
| return false; |
| } |
| if (obj['checksum'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'algorithm': algorithm, |
| 'checksum': checksum, |
| }; |
| } |
| |
| /// Names of checksum algorithms that may be supported by a debug adapter. |
| typedef ChecksumAlgorithm = String; |
| |
| /// A `ColumnDescriptor` specifies what module attribute to show in a column of |
| /// the modules view, how to format it, |
| /// and what the column's label should be. |
| /// It is only used if the underlying UI actually supports this level of |
| /// customization. |
| class ColumnDescriptor { |
| /// Name of the attribute rendered in this column. |
| final String attributeName; |
| |
| /// Format to use for the rendered values in this column. TBD how the format |
| /// strings looks like. |
| final String? format; |
| |
| /// Header UI label of column. |
| final String label; |
| |
| /// Datatype of values in this column. Defaults to `string` if not specified. |
| final String? type; |
| |
| /// Width of this column in characters (hint only). |
| final int? width; |
| |
| static ColumnDescriptor fromJson(Map<String, Object?> obj) => |
| ColumnDescriptor.fromMap(obj); |
| |
| ColumnDescriptor({ |
| required this.attributeName, |
| this.format, |
| required this.label, |
| this.type, |
| this.width, |
| }); |
| |
| ColumnDescriptor.fromMap(Map<String, Object?> obj) |
| : attributeName = obj['attributeName'] as String, |
| format = obj['format'] as String?, |
| label = obj['label'] as String, |
| type = obj['type'] as String?, |
| width = obj['width'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['attributeName'] is! String) { |
| return false; |
| } |
| if (obj['format'] is! String?) { |
| return false; |
| } |
| if (obj['label'] is! String) { |
| return false; |
| } |
| if (obj['type'] is! String?) { |
| return false; |
| } |
| if (obj['width'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'attributeName': attributeName, |
| if (format != null) 'format': format, |
| 'label': label, |
| if (type != null) 'type': type, |
| if (width != null) 'width': width, |
| }; |
| } |
| |
| /// `CompletionItems` are the suggestions returned from the `completions` |
| /// request. |
| class CompletionItem { |
| /// A human-readable string with additional information about this item, like |
| /// type or symbol information. |
| final String? detail; |
| |
| /// The label of this completion item. By default this is also the text that |
| /// is inserted when selecting this completion. |
| final String label; |
| |
| /// Length determines how many characters are overwritten by the completion |
| /// text and it is measured in UTF-16 code units. If missing the value 0 is |
| /// assumed which results in the completion text being inserted. |
| final int? length; |
| |
| /// Determines the length of the new selection after the text has been |
| /// inserted (or replaced) and it is measured in UTF-16 code units. The |
| /// selection can not extend beyond the bounds of the completion text. If |
| /// omitted the length is assumed to be 0. |
| final int? selectionLength; |
| |
| /// Determines the start of the new selection after the text has been inserted |
| /// (or replaced). `selectionStart` is measured in UTF-16 code units and must |
| /// be in the range 0 and length of the completion text. If omitted the |
| /// selection starts at the end of the completion text. |
| final int? selectionStart; |
| |
| /// A string that should be used when comparing this item with other items. If |
| /// not returned or an empty string, the `label` is used instead. |
| final String? sortText; |
| |
| /// Start position (within the `text` attribute of the `completions` request) |
| /// where the completion text is added. The position is measured in UTF-16 |
| /// code units and the client capability `columnsStartAt1` determines whether |
| /// it is 0- or 1-based. If the start position is omitted the text is added at |
| /// the location specified by the `column` attribute of the `completions` |
| /// request. |
| final int? start; |
| |
| /// If text is returned and not an empty string, then it is inserted instead |
| /// of the label. |
| final String? text; |
| |
| /// The item's type. Typically the client uses this information to render the |
| /// item in the UI with an icon. |
| final CompletionItemType? type; |
| |
| static CompletionItem fromJson(Map<String, Object?> obj) => |
| CompletionItem.fromMap(obj); |
| |
| CompletionItem({ |
| this.detail, |
| required this.label, |
| this.length, |
| this.selectionLength, |
| this.selectionStart, |
| this.sortText, |
| this.start, |
| this.text, |
| this.type, |
| }); |
| |
| CompletionItem.fromMap(Map<String, Object?> obj) |
| : detail = obj['detail'] as String?, |
| label = obj['label'] as String, |
| length = obj['length'] as int?, |
| selectionLength = obj['selectionLength'] as int?, |
| selectionStart = obj['selectionStart'] as int?, |
| sortText = obj['sortText'] as String?, |
| start = obj['start'] as int?, |
| text = obj['text'] as String?, |
| type = obj['type'] as CompletionItemType?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['detail'] is! String?) { |
| return false; |
| } |
| if (obj['label'] is! String) { |
| return false; |
| } |
| if (obj['length'] is! int?) { |
| return false; |
| } |
| if (obj['selectionLength'] is! int?) { |
| return false; |
| } |
| if (obj['selectionStart'] is! int?) { |
| return false; |
| } |
| if (obj['sortText'] is! String?) { |
| return false; |
| } |
| if (obj['start'] is! int?) { |
| return false; |
| } |
| if (obj['text'] is! String?) { |
| return false; |
| } |
| if (obj['type'] is! CompletionItemType?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (detail != null) 'detail': detail, |
| 'label': label, |
| if (length != null) 'length': length, |
| if (selectionLength != null) 'selectionLength': selectionLength, |
| if (selectionStart != null) 'selectionStart': selectionStart, |
| if (sortText != null) 'sortText': sortText, |
| if (start != null) 'start': start, |
| if (text != null) 'text': text, |
| if (type != null) 'type': type, |
| }; |
| } |
| |
| /// Some predefined types for the CompletionItem. Please note that not all |
| /// clients have specific icons for all of them. |
| typedef CompletionItemType = String; |
| |
| /// Arguments for `completions` request. |
| class CompletionsArguments extends RequestArguments { |
| /// The position within `text` for which to determine the completion |
| /// proposals. It is measured in UTF-16 code units and the client capability |
| /// `columnsStartAt1` determines whether it is 0- or 1-based. |
| final int column; |
| |
| /// Returns completions in the scope of this stack frame. If not specified, |
| /// the completions are returned for the global scope. |
| final int? frameId; |
| |
| /// A line for which to determine the completion proposals. If missing the |
| /// first line of the text is assumed. |
| final int? line; |
| |
| /// One or more source lines. Typically this is the text users have typed into |
| /// the debug console before they asked for completion. |
| final String text; |
| |
| static CompletionsArguments fromJson(Map<String, Object?> obj) => |
| CompletionsArguments.fromMap(obj); |
| |
| CompletionsArguments({ |
| required this.column, |
| this.frameId, |
| this.line, |
| required this.text, |
| }); |
| |
| CompletionsArguments.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int, |
| frameId = obj['frameId'] as int?, |
| line = obj['line'] as int?, |
| text = obj['text'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int) { |
| return false; |
| } |
| if (obj['frameId'] is! int?) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| if (obj['text'] is! String) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'column': column, |
| if (frameId != null) 'frameId': frameId, |
| if (line != null) 'line': line, |
| 'text': text, |
| }; |
| } |
| |
| /// Response to `completions` request. |
| class CompletionsResponse extends Response { |
| static CompletionsResponse fromJson(Map<String, Object?> obj) => |
| CompletionsResponse.fromMap(obj); |
| |
| CompletionsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| CompletionsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `configurationDone` request. |
| class ConfigurationDoneArguments extends RequestArguments { |
| static ConfigurationDoneArguments fromJson(Map<String, Object?> obj) => |
| ConfigurationDoneArguments.fromMap(obj); |
| |
| ConfigurationDoneArguments(); |
| |
| ConfigurationDoneArguments.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Response to `configurationDone` request. This is just an acknowledgement, so |
| /// no body field is required. |
| class ConfigurationDoneResponse extends Response { |
| static ConfigurationDoneResponse fromJson(Map<String, Object?> obj) => |
| ConfigurationDoneResponse.fromMap(obj); |
| |
| ConfigurationDoneResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ConfigurationDoneResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `continue` request. |
| class ContinueArguments extends RequestArguments { |
| /// If this flag is true, execution is resumed only for the thread with given |
| /// `threadId`. |
| final bool? singleThread; |
| |
| /// Specifies the active thread. If the debug adapter supports single thread |
| /// execution (see `supportsSingleThreadExecutionRequests`) and the argument |
| /// `singleThread` is true, only the thread with this ID is resumed. |
| final int threadId; |
| |
| static ContinueArguments fromJson(Map<String, Object?> obj) => |
| ContinueArguments.fromMap(obj); |
| |
| ContinueArguments({ |
| this.singleThread, |
| required this.threadId, |
| }); |
| |
| ContinueArguments.fromMap(Map<String, Object?> obj) |
| : singleThread = obj['singleThread'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (singleThread != null) 'singleThread': singleThread, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `continue` request. |
| class ContinueResponse extends Response { |
| static ContinueResponse fromJson(Map<String, Object?> obj) => |
| ContinueResponse.fromMap(obj); |
| |
| ContinueResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ContinueResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Properties of a data breakpoint passed to the `setDataBreakpoints` request. |
| class DataBreakpoint { |
| /// The access type of the data. |
| final DataBreakpointAccessType? accessType; |
| |
| /// An expression for conditional breakpoints. |
| final String? condition; |
| |
| /// An id representing the data. This id is returned from the |
| /// `dataBreakpointInfo` request. |
| final String dataId; |
| |
| /// An expression that controls how many hits of the breakpoint are ignored. |
| /// The debug adapter is expected to interpret the expression as needed. |
| final String? hitCondition; |
| |
| static DataBreakpoint fromJson(Map<String, Object?> obj) => |
| DataBreakpoint.fromMap(obj); |
| |
| DataBreakpoint({ |
| this.accessType, |
| this.condition, |
| required this.dataId, |
| this.hitCondition, |
| }); |
| |
| DataBreakpoint.fromMap(Map<String, Object?> obj) |
| : accessType = obj['accessType'] as DataBreakpointAccessType?, |
| condition = obj['condition'] as String?, |
| dataId = obj['dataId'] as String, |
| hitCondition = obj['hitCondition'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['accessType'] is! DataBreakpointAccessType?) { |
| return false; |
| } |
| if (obj['condition'] is! String?) { |
| return false; |
| } |
| if (obj['dataId'] is! String) { |
| return false; |
| } |
| if (obj['hitCondition'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (accessType != null) 'accessType': accessType, |
| if (condition != null) 'condition': condition, |
| 'dataId': dataId, |
| if (hitCondition != null) 'hitCondition': hitCondition, |
| }; |
| } |
| |
| /// This enumeration defines all possible access types for data breakpoints. |
| typedef DataBreakpointAccessType = String; |
| |
| /// Arguments for `dataBreakpointInfo` request. |
| class DataBreakpointInfoArguments extends RequestArguments { |
| /// When `name` is an expression, evaluate it in the scope of this stack |
| /// frame. If not specified, the expression is evaluated in the global scope. |
| /// When `variablesReference` is specified, this property has no effect. |
| final int? frameId; |
| |
| /// The name of the variable's child to obtain data breakpoint information |
| /// for. |
| /// If `variablesReference` isn't specified, this can be an expression. |
| final String name; |
| |
| /// Reference to the variable container if the data breakpoint is requested |
| /// for a child of the container. The `variablesReference` must have been |
| /// obtained in the current suspended state. See 'Lifetime of Object |
| /// References' in the Overview section for details. |
| final int? variablesReference; |
| |
| static DataBreakpointInfoArguments fromJson(Map<String, Object?> obj) => |
| DataBreakpointInfoArguments.fromMap(obj); |
| |
| DataBreakpointInfoArguments({ |
| this.frameId, |
| required this.name, |
| this.variablesReference, |
| }); |
| |
| DataBreakpointInfoArguments.fromMap(Map<String, Object?> obj) |
| : frameId = obj['frameId'] as int?, |
| name = obj['name'] as String, |
| variablesReference = obj['variablesReference'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['frameId'] is! int?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (frameId != null) 'frameId': frameId, |
| 'name': name, |
| if (variablesReference != null) |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Response to `dataBreakpointInfo` request. |
| class DataBreakpointInfoResponse extends Response { |
| static DataBreakpointInfoResponse fromJson(Map<String, Object?> obj) => |
| DataBreakpointInfoResponse.fromMap(obj); |
| |
| DataBreakpointInfoResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| DataBreakpointInfoResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `disassemble` request. |
| class DisassembleArguments extends RequestArguments { |
| /// Number of instructions to disassemble starting at the specified location |
| /// and offset. |
| /// An adapter must return exactly this number of instructions - any |
| /// unavailable instructions should be replaced with an implementation-defined |
| /// 'invalid instruction' value. |
| final int instructionCount; |
| |
| /// Offset (in instructions) to be applied after the byte offset (if any) |
| /// before disassembling. Can be negative. |
| final int? instructionOffset; |
| |
| /// Memory reference to the base location containing the instructions to |
| /// disassemble. |
| final String memoryReference; |
| |
| /// Offset (in bytes) to be applied to the reference location before |
| /// disassembling. Can be negative. |
| final int? offset; |
| |
| /// If true, the adapter should attempt to resolve memory addresses and other |
| /// values to symbolic names. |
| final bool? resolveSymbols; |
| |
| static DisassembleArguments fromJson(Map<String, Object?> obj) => |
| DisassembleArguments.fromMap(obj); |
| |
| DisassembleArguments({ |
| required this.instructionCount, |
| this.instructionOffset, |
| required this.memoryReference, |
| this.offset, |
| this.resolveSymbols, |
| }); |
| |
| DisassembleArguments.fromMap(Map<String, Object?> obj) |
| : instructionCount = obj['instructionCount'] as int, |
| instructionOffset = obj['instructionOffset'] as int?, |
| memoryReference = obj['memoryReference'] as String, |
| offset = obj['offset'] as int?, |
| resolveSymbols = obj['resolveSymbols'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['instructionCount'] is! int) { |
| return false; |
| } |
| if (obj['instructionOffset'] is! int?) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| if (obj['resolveSymbols'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'instructionCount': instructionCount, |
| if (instructionOffset != null) 'instructionOffset': instructionOffset, |
| 'memoryReference': memoryReference, |
| if (offset != null) 'offset': offset, |
| if (resolveSymbols != null) 'resolveSymbols': resolveSymbols, |
| }; |
| } |
| |
| /// Response to `disassemble` request. |
| class DisassembleResponse extends Response { |
| static DisassembleResponse fromJson(Map<String, Object?> obj) => |
| DisassembleResponse.fromMap(obj); |
| |
| DisassembleResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| DisassembleResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>?) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Represents a single disassembled instruction. |
| class DisassembledInstruction { |
| /// The address of the instruction. Treated as a hex value if prefixed with |
| /// `0x`, or as a decimal value otherwise. |
| final String address; |
| |
| /// The column within the line that corresponds to this instruction, if any. |
| final int? column; |
| |
| /// The end column of the range that corresponds to this instruction, if any. |
| final int? endColumn; |
| |
| /// The end line of the range that corresponds to this instruction, if any. |
| final int? endLine; |
| |
| /// Text representing the instruction and its operands, in an |
| /// implementation-defined format. |
| final String instruction; |
| |
| /// Raw bytes representing the instruction and its operands, in an |
| /// implementation-defined format. |
| final String? instructionBytes; |
| |
| /// The line within the source location that corresponds to this instruction, |
| /// if any. |
| final int? line; |
| |
| /// Source location that corresponds to this instruction, if any. |
| /// Should always be set (if available) on the first instruction returned, |
| /// but can be omitted afterwards if this instruction maps to the same source |
| /// file as the previous instruction. |
| final Source? location; |
| |
| /// Name of the symbol that corresponds with the location of this instruction, |
| /// if any. |
| final String? symbol; |
| |
| static DisassembledInstruction fromJson(Map<String, Object?> obj) => |
| DisassembledInstruction.fromMap(obj); |
| |
| DisassembledInstruction({ |
| required this.address, |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.instruction, |
| this.instructionBytes, |
| this.line, |
| this.location, |
| this.symbol, |
| }); |
| |
| DisassembledInstruction.fromMap(Map<String, Object?> obj) |
| : address = obj['address'] as String, |
| column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| instruction = obj['instruction'] as String, |
| instructionBytes = obj['instructionBytes'] as String?, |
| line = obj['line'] as int?, |
| location = obj['location'] == null |
| ? null |
| : Source.fromJson(obj['location'] as Map<String, Object?>), |
| symbol = obj['symbol'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['address'] is! String) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['instruction'] is! String) { |
| return false; |
| } |
| if (obj['instructionBytes'] is! String?) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| if (!Source.canParse(obj['location'])) { |
| return false; |
| } |
| if (obj['symbol'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'address': address, |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'instruction': instruction, |
| if (instructionBytes != null) 'instructionBytes': instructionBytes, |
| if (line != null) 'line': line, |
| if (location != null) 'location': location, |
| if (symbol != null) 'symbol': symbol, |
| }; |
| } |
| |
| /// Arguments for `disconnect` request. |
| class DisconnectArguments extends RequestArguments { |
| /// A value of true indicates that this `disconnect` request is part of a |
| /// restart sequence. |
| final bool? restart; |
| |
| /// Indicates whether the debuggee should stay suspended when the debugger is |
| /// disconnected. |
| /// If unspecified, the debuggee should resume execution. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportSuspendDebuggee` is true. |
| final bool? suspendDebuggee; |
| |
| /// Indicates whether the debuggee should be terminated when the debugger is |
| /// disconnected. |
| /// If unspecified, the debug adapter is free to do whatever it thinks is |
| /// best. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportTerminateDebuggee` is true. |
| final bool? terminateDebuggee; |
| |
| static DisconnectArguments fromJson(Map<String, Object?> obj) => |
| DisconnectArguments.fromMap(obj); |
| |
| DisconnectArguments({ |
| this.restart, |
| this.suspendDebuggee, |
| this.terminateDebuggee, |
| }); |
| |
| DisconnectArguments.fromMap(Map<String, Object?> obj) |
| : restart = obj['restart'] as bool?, |
| suspendDebuggee = obj['suspendDebuggee'] as bool?, |
| terminateDebuggee = obj['terminateDebuggee'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['restart'] is! bool?) { |
| return false; |
| } |
| if (obj['suspendDebuggee'] is! bool?) { |
| return false; |
| } |
| if (obj['terminateDebuggee'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (restart != null) 'restart': restart, |
| if (suspendDebuggee != null) 'suspendDebuggee': suspendDebuggee, |
| if (terminateDebuggee != null) 'terminateDebuggee': terminateDebuggee, |
| }; |
| } |
| |
| /// Response to `disconnect` request. This is just an acknowledgement, so no |
| /// body field is required. |
| class DisconnectResponse extends Response { |
| static DisconnectResponse fromJson(Map<String, Object?> obj) => |
| DisconnectResponse.fromMap(obj); |
| |
| DisconnectResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| DisconnectResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// On error (whenever `success` is false), the body can provide more details. |
| class ErrorResponse extends Response { |
| static ErrorResponse fromJson(Map<String, Object?> obj) => |
| ErrorResponse.fromMap(obj); |
| |
| ErrorResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ErrorResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `evaluate` request. |
| class EvaluateArguments extends RequestArguments { |
| /// The context in which the evaluate request is used. |
| final String? context; |
| |
| /// The expression to evaluate. |
| final String expression; |
| |
| /// Specifies details on how to format the result. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsValueFormattingOptions` is true. |
| final ValueFormat? format; |
| |
| /// Evaluate the expression in the scope of this stack frame. If not |
| /// specified, the expression is evaluated in the global scope. |
| final int? frameId; |
| |
| static EvaluateArguments fromJson(Map<String, Object?> obj) => |
| EvaluateArguments.fromMap(obj); |
| |
| EvaluateArguments({ |
| this.context, |
| required this.expression, |
| this.format, |
| this.frameId, |
| }); |
| |
| EvaluateArguments.fromMap(Map<String, Object?> obj) |
| : context = obj['context'] as String?, |
| expression = obj['expression'] as String, |
| format = obj['format'] == null |
| ? null |
| : ValueFormat.fromJson(obj['format'] as Map<String, Object?>), |
| frameId = obj['frameId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['context'] is! String?) { |
| return false; |
| } |
| if (obj['expression'] is! String) { |
| return false; |
| } |
| if (!ValueFormat.canParse(obj['format'])) { |
| return false; |
| } |
| if (obj['frameId'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (context != null) 'context': context, |
| 'expression': expression, |
| if (format != null) 'format': format, |
| if (frameId != null) 'frameId': frameId, |
| }; |
| } |
| |
| /// Response to `evaluate` request. |
| class EvaluateResponse extends Response { |
| static EvaluateResponse fromJson(Map<String, Object?> obj) => |
| EvaluateResponse.fromMap(obj); |
| |
| EvaluateResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| EvaluateResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A debug adapter initiated event. |
| class Event extends ProtocolMessage { |
| /// Event-specific information. |
| final Object? body; |
| |
| /// Type of event. |
| final String event; |
| |
| static Event fromJson(Map<String, Object?> obj) => Event.fromMap(obj); |
| |
| Event({ |
| this.body, |
| required this.event, |
| required super.seq, |
| }) : super( |
| type: 'event', |
| ); |
| |
| Event.fromMap(super.obj) |
| : body = obj['body'], |
| event = obj['event'] as String, |
| super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['event'] is! String) { |
| return false; |
| } |
| if (obj['type'] is! String) { |
| return false; |
| } |
| return ProtocolMessage.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| if (body != null) 'body': body, |
| 'event': event, |
| }; |
| } |
| |
| /// This enumeration defines all possible conditions when a thrown exception |
| /// should result in a break. |
| /// never: never breaks, |
| /// always: always breaks, |
| /// unhandled: breaks when exception unhandled, |
| /// userUnhandled: breaks if the exception is not handled by user code. |
| typedef ExceptionBreakMode = String; |
| |
| /// An `ExceptionBreakpointsFilter` is shown in the UI as an filter option for |
| /// configuring how exceptions are dealt with. |
| class ExceptionBreakpointsFilter { |
| /// A help text providing information about the condition. This string is |
| /// shown as the placeholder text for a text box and can be translated. |
| final String? conditionDescription; |
| |
| /// Initial value of the filter option. If not specified a value false is |
| /// assumed. |
| final bool? defaultValue; |
| |
| /// A help text providing additional information about the exception filter. |
| /// This string is typically shown as a hover and can be translated. |
| final String? description; |
| |
| /// The internal ID of the filter option. This value is passed to the |
| /// `setExceptionBreakpoints` request. |
| final String filter; |
| |
| /// The name of the filter option. This is shown in the UI. |
| final String label; |
| |
| /// Controls whether a condition can be specified for this filter option. If |
| /// false or missing, a condition can not be set. |
| final bool? supportsCondition; |
| |
| static ExceptionBreakpointsFilter fromJson(Map<String, Object?> obj) => |
| ExceptionBreakpointsFilter.fromMap(obj); |
| |
| ExceptionBreakpointsFilter({ |
| this.conditionDescription, |
| this.defaultValue, |
| this.description, |
| required this.filter, |
| required this.label, |
| this.supportsCondition, |
| }); |
| |
| ExceptionBreakpointsFilter.fromMap(Map<String, Object?> obj) |
| : conditionDescription = obj['conditionDescription'] as String?, |
| defaultValue = obj['default'] as bool?, |
| description = obj['description'] as String?, |
| filter = obj['filter'] as String, |
| label = obj['label'] as String, |
| supportsCondition = obj['supportsCondition'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['conditionDescription'] is! String?) { |
| return false; |
| } |
| if (obj['default'] is! bool?) { |
| return false; |
| } |
| if (obj['description'] is! String?) { |
| return false; |
| } |
| if (obj['filter'] is! String) { |
| return false; |
| } |
| if (obj['label'] is! String) { |
| return false; |
| } |
| if (obj['supportsCondition'] is! bool?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (conditionDescription != null) |
| 'conditionDescription': conditionDescription, |
| if (defaultValue != null) 'default': defaultValue, |
| if (description != null) 'description': description, |
| 'filter': filter, |
| 'label': label, |
| if (supportsCondition != null) 'supportsCondition': supportsCondition, |
| }; |
| } |
| |
| /// Detailed information about an exception that has occurred. |
| class ExceptionDetails { |
| /// An expression that can be evaluated in the current scope to obtain the |
| /// exception object. |
| final String? evaluateName; |
| |
| /// Fully-qualified type name of the exception object. |
| final String? fullTypeName; |
| |
| /// Details of the exception contained by this exception, if any. |
| final List<ExceptionDetails>? innerException; |
| |
| /// Message contained in the exception. |
| final String? message; |
| |
| /// Stack trace at the time the exception was thrown. |
| final String? stackTrace; |
| |
| /// Short type name of the exception object. |
| final String? typeName; |
| |
| static ExceptionDetails fromJson(Map<String, Object?> obj) => |
| ExceptionDetails.fromMap(obj); |
| |
| ExceptionDetails({ |
| this.evaluateName, |
| this.fullTypeName, |
| this.innerException, |
| this.message, |
| this.stackTrace, |
| this.typeName, |
| }); |
| |
| ExceptionDetails.fromMap(Map<String, Object?> obj) |
| : evaluateName = obj['evaluateName'] as String?, |
| fullTypeName = obj['fullTypeName'] as String?, |
| innerException = (obj['innerException'] as List?) |
| ?.map((item) => |
| ExceptionDetails.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| message = obj['message'] as String?, |
| stackTrace = obj['stackTrace'] as String?, |
| typeName = obj['typeName'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['evaluateName'] is! String?) { |
| return false; |
| } |
| if (obj['fullTypeName'] is! String?) { |
| return false; |
| } |
| if ((obj['innerException'] is! List || |
| (obj['innerException'] |
| .any((item) => !ExceptionDetails.canParse(item))))) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['stackTrace'] is! String?) { |
| return false; |
| } |
| if (obj['typeName'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (evaluateName != null) 'evaluateName': evaluateName, |
| if (fullTypeName != null) 'fullTypeName': fullTypeName, |
| if (innerException != null) 'innerException': innerException, |
| if (message != null) 'message': message, |
| if (stackTrace != null) 'stackTrace': stackTrace, |
| if (typeName != null) 'typeName': typeName, |
| }; |
| } |
| |
| /// An `ExceptionFilterOptions` is used to specify an exception filter together |
| /// with a condition for the `setExceptionBreakpoints` request. |
| class ExceptionFilterOptions { |
| /// An expression for conditional exceptions. |
| /// The exception breaks into the debugger if the result of the condition is |
| /// true. |
| final String? condition; |
| |
| /// ID of an exception filter returned by the `exceptionBreakpointFilters` |
| /// capability. |
| final String filterId; |
| |
| static ExceptionFilterOptions fromJson(Map<String, Object?> obj) => |
| ExceptionFilterOptions.fromMap(obj); |
| |
| ExceptionFilterOptions({ |
| this.condition, |
| required this.filterId, |
| }); |
| |
| ExceptionFilterOptions.fromMap(Map<String, Object?> obj) |
| : condition = obj['condition'] as String?, |
| filterId = obj['filterId'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['condition'] is! String?) { |
| return false; |
| } |
| if (obj['filterId'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (condition != null) 'condition': condition, |
| 'filterId': filterId, |
| }; |
| } |
| |
| /// Arguments for `exceptionInfo` request. |
| class ExceptionInfoArguments extends RequestArguments { |
| /// Thread for which exception information should be retrieved. |
| final int threadId; |
| |
| static ExceptionInfoArguments fromJson(Map<String, Object?> obj) => |
| ExceptionInfoArguments.fromMap(obj); |
| |
| ExceptionInfoArguments({ |
| required this.threadId, |
| }); |
| |
| ExceptionInfoArguments.fromMap(Map<String, Object?> obj) |
| : threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `exceptionInfo` request. |
| class ExceptionInfoResponse extends Response { |
| static ExceptionInfoResponse fromJson(Map<String, Object?> obj) => |
| ExceptionInfoResponse.fromMap(obj); |
| |
| ExceptionInfoResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ExceptionInfoResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// An `ExceptionOptions` assigns configuration options to a set of exceptions. |
| class ExceptionOptions { |
| /// Condition when a thrown exception should result in a break. |
| final ExceptionBreakMode breakMode; |
| |
| /// A path that selects a single or multiple exceptions in a tree. If `path` |
| /// is missing, the whole tree is selected. |
| /// By convention the first segment of the path is a category that is used to |
| /// group exceptions in the UI. |
| final List<ExceptionPathSegment>? path; |
| |
| static ExceptionOptions fromJson(Map<String, Object?> obj) => |
| ExceptionOptions.fromMap(obj); |
| |
| ExceptionOptions({ |
| required this.breakMode, |
| this.path, |
| }); |
| |
| ExceptionOptions.fromMap(Map<String, Object?> obj) |
| : breakMode = obj['breakMode'] as ExceptionBreakMode, |
| path = (obj['path'] as List?) |
| ?.map((item) => |
| ExceptionPathSegment.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['breakMode'] is! ExceptionBreakMode) { |
| return false; |
| } |
| if ((obj['path'] is! List || |
| (obj['path'].any((item) => !ExceptionPathSegment.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakMode': breakMode, |
| if (path != null) 'path': path, |
| }; |
| } |
| |
| /// An `ExceptionPathSegment` represents a segment in a path that is used to |
| /// match leafs or nodes in a tree of exceptions. |
| /// If a segment consists of more than one name, it matches the names provided |
| /// if `negate` is false or missing, or it matches anything except the names |
| /// provided if `negate` is true. |
| class ExceptionPathSegment { |
| /// Depending on the value of `negate` the names that should match or not |
| /// match. |
| final List<String> names; |
| |
| /// If false or missing this segment matches the names provided, otherwise it |
| /// matches anything except the names provided. |
| final bool? negate; |
| |
| static ExceptionPathSegment fromJson(Map<String, Object?> obj) => |
| ExceptionPathSegment.fromMap(obj); |
| |
| ExceptionPathSegment({ |
| required this.names, |
| this.negate, |
| }); |
| |
| ExceptionPathSegment.fromMap(Map<String, Object?> obj) |
| : names = (obj['names'] as List).map((item) => item as String).toList(), |
| negate = obj['negate'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['names'] is! List || |
| (obj['names'].any((item) => item is! String)))) { |
| return false; |
| } |
| if (obj['negate'] is! bool?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'names': names, |
| if (negate != null) 'negate': negate, |
| }; |
| } |
| |
| /// Properties of a breakpoint passed to the `setFunctionBreakpoints` request. |
| class FunctionBreakpoint { |
| /// An expression for conditional breakpoints. |
| /// It is only honored by a debug adapter if the corresponding capability |
| /// `supportsConditionalBreakpoints` is true. |
| final String? condition; |
| |
| /// An expression that controls how many hits of the breakpoint are ignored. |
| /// The debug adapter is expected to interpret the expression as needed. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsHitConditionalBreakpoints` is true. |
| final String? hitCondition; |
| |
| /// The name of the function. |
| final String name; |
| |
| static FunctionBreakpoint fromJson(Map<String, Object?> obj) => |
| FunctionBreakpoint.fromMap(obj); |
| |
| FunctionBreakpoint({ |
| this.condition, |
| this.hitCondition, |
| required this.name, |
| }); |
| |
| FunctionBreakpoint.fromMap(Map<String, Object?> obj) |
| : condition = obj['condition'] as String?, |
| hitCondition = obj['hitCondition'] as String?, |
| name = obj['name'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['condition'] is! String?) { |
| return false; |
| } |
| if (obj['hitCondition'] is! String?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (condition != null) 'condition': condition, |
| if (hitCondition != null) 'hitCondition': hitCondition, |
| 'name': name, |
| }; |
| } |
| |
| /// Arguments for `goto` request. |
| class GotoArguments extends RequestArguments { |
| /// The location where the debuggee will continue to run. |
| final int targetId; |
| |
| /// Set the goto target for this thread. |
| final int threadId; |
| |
| static GotoArguments fromJson(Map<String, Object?> obj) => |
| GotoArguments.fromMap(obj); |
| |
| GotoArguments({ |
| required this.targetId, |
| required this.threadId, |
| }); |
| |
| GotoArguments.fromMap(Map<String, Object?> obj) |
| : targetId = obj['targetId'] as int, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['targetId'] is! int) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'targetId': targetId, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `goto` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class GotoResponse extends Response { |
| static GotoResponse fromJson(Map<String, Object?> obj) => |
| GotoResponse.fromMap(obj); |
| |
| GotoResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| GotoResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A `GotoTarget` describes a code location that can be used as a target in the |
| /// `goto` request. |
| /// The possible goto targets can be determined via the `gotoTargets` request. |
| class GotoTarget { |
| /// The column of the goto target. |
| final int? column; |
| |
| /// The end column of the range covered by the goto target. |
| final int? endColumn; |
| |
| /// The end line of the range covered by the goto target. |
| final int? endLine; |
| |
| /// Unique identifier for a goto target. This is used in the `goto` request. |
| final int id; |
| |
| /// A memory reference for the instruction pointer value represented by this |
| /// target. |
| final String? instructionPointerReference; |
| |
| /// The name of the goto target (shown in the UI). |
| final String label; |
| |
| /// The line of the goto target. |
| final int line; |
| |
| static GotoTarget fromJson(Map<String, Object?> obj) => |
| GotoTarget.fromMap(obj); |
| |
| GotoTarget({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.id, |
| this.instructionPointerReference, |
| required this.label, |
| required this.line, |
| }); |
| |
| GotoTarget.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| id = obj['id'] as int, |
| instructionPointerReference = |
| obj['instructionPointerReference'] as String?, |
| label = obj['label'] as String, |
| line = obj['line'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['id'] is! int) { |
| return false; |
| } |
| if (obj['instructionPointerReference'] is! String?) { |
| return false; |
| } |
| if (obj['label'] is! String) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'id': id, |
| if (instructionPointerReference != null) |
| 'instructionPointerReference': instructionPointerReference, |
| 'label': label, |
| 'line': line, |
| }; |
| } |
| |
| /// Arguments for `gotoTargets` request. |
| class GotoTargetsArguments extends RequestArguments { |
| /// The position within `line` for which the goto targets are determined. It |
| /// is measured in UTF-16 code units and the client capability |
| /// `columnsStartAt1` determines whether it is 0- or 1-based. |
| final int? column; |
| |
| /// The line location for which the goto targets are determined. |
| final int line; |
| |
| /// The source location for which the goto targets are determined. |
| final Source source; |
| |
| static GotoTargetsArguments fromJson(Map<String, Object?> obj) => |
| GotoTargetsArguments.fromMap(obj); |
| |
| GotoTargetsArguments({ |
| this.column, |
| required this.line, |
| required this.source, |
| }); |
| |
| GotoTargetsArguments.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| line = obj['line'] as int, |
| source = Source.fromJson(obj['source'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| 'line': line, |
| 'source': source, |
| }; |
| } |
| |
| /// Response to `gotoTargets` request. |
| class GotoTargetsResponse extends Response { |
| static GotoTargetsResponse fromJson(Map<String, Object?> obj) => |
| GotoTargetsResponse.fromMap(obj); |
| |
| GotoTargetsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| GotoTargetsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `initialize` request. |
| class InitializeRequestArguments extends RequestArguments { |
| /// The ID of the debug adapter. |
| final String adapterID; |
| |
| /// The ID of the client using this adapter. |
| final String? clientID; |
| |
| /// The human-readable name of the client using this adapter. |
| final String? clientName; |
| |
| /// If true all column numbers are 1-based (default). |
| final bool? columnsStartAt1; |
| |
| /// If true all line numbers are 1-based (default). |
| final bool? linesStartAt1; |
| |
| /// The ISO-639 locale of the client using this adapter, e.g. en-US or de-CH. |
| final String? locale; |
| |
| /// Determines in what format paths are specified. The default is `path`, |
| /// which is the native format. |
| final String? pathFormat; |
| |
| /// Client supports the `argsCanBeInterpretedByShell` attribute on the |
| /// `runInTerminal` request. |
| final bool? supportsArgsCanBeInterpretedByShell; |
| |
| /// Client supports the `invalidated` event. |
| final bool? supportsInvalidatedEvent; |
| |
| /// Client supports the `memory` event. |
| final bool? supportsMemoryEvent; |
| |
| /// Client supports memory references. |
| final bool? supportsMemoryReferences; |
| |
| /// Client supports progress reporting. |
| final bool? supportsProgressReporting; |
| |
| /// Client supports the `runInTerminal` request. |
| final bool? supportsRunInTerminalRequest; |
| |
| /// Client supports the `startDebugging` request. |
| final bool? supportsStartDebuggingRequest; |
| |
| /// Client supports the paging of variables. |
| final bool? supportsVariablePaging; |
| |
| /// Client supports the `type` attribute for variables. |
| final bool? supportsVariableType; |
| |
| static InitializeRequestArguments fromJson(Map<String, Object?> obj) => |
| InitializeRequestArguments.fromMap(obj); |
| |
| InitializeRequestArguments({ |
| required this.adapterID, |
| this.clientID, |
| this.clientName, |
| this.columnsStartAt1, |
| this.linesStartAt1, |
| this.locale, |
| this.pathFormat, |
| this.supportsArgsCanBeInterpretedByShell, |
| this.supportsInvalidatedEvent, |
| this.supportsMemoryEvent, |
| this.supportsMemoryReferences, |
| this.supportsProgressReporting, |
| this.supportsRunInTerminalRequest, |
| this.supportsStartDebuggingRequest, |
| this.supportsVariablePaging, |
| this.supportsVariableType, |
| }); |
| |
| InitializeRequestArguments.fromMap(Map<String, Object?> obj) |
| : adapterID = obj['adapterID'] as String, |
| clientID = obj['clientID'] as String?, |
| clientName = obj['clientName'] as String?, |
| columnsStartAt1 = obj['columnsStartAt1'] as bool?, |
| linesStartAt1 = obj['linesStartAt1'] as bool?, |
| locale = obj['locale'] as String?, |
| pathFormat = obj['pathFormat'] as String?, |
| supportsArgsCanBeInterpretedByShell = |
| obj['supportsArgsCanBeInterpretedByShell'] as bool?, |
| supportsInvalidatedEvent = obj['supportsInvalidatedEvent'] as bool?, |
| supportsMemoryEvent = obj['supportsMemoryEvent'] as bool?, |
| supportsMemoryReferences = obj['supportsMemoryReferences'] as bool?, |
| supportsProgressReporting = obj['supportsProgressReporting'] as bool?, |
| supportsRunInTerminalRequest = |
| obj['supportsRunInTerminalRequest'] as bool?, |
| supportsStartDebuggingRequest = |
| obj['supportsStartDebuggingRequest'] as bool?, |
| supportsVariablePaging = obj['supportsVariablePaging'] as bool?, |
| supportsVariableType = obj['supportsVariableType'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['adapterID'] is! String) { |
| return false; |
| } |
| if (obj['clientID'] is! String?) { |
| return false; |
| } |
| if (obj['clientName'] is! String?) { |
| return false; |
| } |
| if (obj['columnsStartAt1'] is! bool?) { |
| return false; |
| } |
| if (obj['linesStartAt1'] is! bool?) { |
| return false; |
| } |
| if (obj['locale'] is! String?) { |
| return false; |
| } |
| if (obj['pathFormat'] is! String?) { |
| return false; |
| } |
| if (obj['supportsArgsCanBeInterpretedByShell'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsInvalidatedEvent'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsMemoryEvent'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsMemoryReferences'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsProgressReporting'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsRunInTerminalRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsStartDebuggingRequest'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsVariablePaging'] is! bool?) { |
| return false; |
| } |
| if (obj['supportsVariableType'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'adapterID': adapterID, |
| if (clientID != null) 'clientID': clientID, |
| if (clientName != null) 'clientName': clientName, |
| if (columnsStartAt1 != null) 'columnsStartAt1': columnsStartAt1, |
| if (linesStartAt1 != null) 'linesStartAt1': linesStartAt1, |
| if (locale != null) 'locale': locale, |
| if (pathFormat != null) 'pathFormat': pathFormat, |
| if (supportsArgsCanBeInterpretedByShell != null) |
| 'supportsArgsCanBeInterpretedByShell': |
| supportsArgsCanBeInterpretedByShell, |
| if (supportsInvalidatedEvent != null) |
| 'supportsInvalidatedEvent': supportsInvalidatedEvent, |
| if (supportsMemoryEvent != null) |
| 'supportsMemoryEvent': supportsMemoryEvent, |
| if (supportsMemoryReferences != null) |
| 'supportsMemoryReferences': supportsMemoryReferences, |
| if (supportsProgressReporting != null) |
| 'supportsProgressReporting': supportsProgressReporting, |
| if (supportsRunInTerminalRequest != null) |
| 'supportsRunInTerminalRequest': supportsRunInTerminalRequest, |
| if (supportsStartDebuggingRequest != null) |
| 'supportsStartDebuggingRequest': supportsStartDebuggingRequest, |
| if (supportsVariablePaging != null) |
| 'supportsVariablePaging': supportsVariablePaging, |
| if (supportsVariableType != null) |
| 'supportsVariableType': supportsVariableType, |
| }; |
| } |
| |
| /// Response to `initialize` request. |
| class InitializeResponse extends Response { |
| static InitializeResponse fromJson(Map<String, Object?> obj) => |
| InitializeResponse.fromMap(obj); |
| |
| InitializeResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| InitializeResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Capabilities.canParse(obj['body'])) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Properties of a breakpoint passed to the `setInstructionBreakpoints` request |
| class InstructionBreakpoint { |
| /// An expression for conditional breakpoints. |
| /// It is only honored by a debug adapter if the corresponding capability |
| /// `supportsConditionalBreakpoints` is true. |
| final String? condition; |
| |
| /// An expression that controls how many hits of the breakpoint are ignored. |
| /// The debug adapter is expected to interpret the expression as needed. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsHitConditionalBreakpoints` is true. |
| final String? hitCondition; |
| |
| /// The instruction reference of the breakpoint. |
| /// This should be a memory or instruction pointer reference from an |
| /// `EvaluateResponse`, `Variable`, `StackFrame`, `GotoTarget`, or |
| /// `Breakpoint`. |
| final String instructionReference; |
| |
| /// The offset from the instruction reference. |
| /// This can be negative. |
| final int? offset; |
| |
| static InstructionBreakpoint fromJson(Map<String, Object?> obj) => |
| InstructionBreakpoint.fromMap(obj); |
| |
| InstructionBreakpoint({ |
| this.condition, |
| this.hitCondition, |
| required this.instructionReference, |
| this.offset, |
| }); |
| |
| InstructionBreakpoint.fromMap(Map<String, Object?> obj) |
| : condition = obj['condition'] as String?, |
| hitCondition = obj['hitCondition'] as String?, |
| instructionReference = obj['instructionReference'] as String, |
| offset = obj['offset'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['condition'] is! String?) { |
| return false; |
| } |
| if (obj['hitCondition'] is! String?) { |
| return false; |
| } |
| if (obj['instructionReference'] is! String) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (condition != null) 'condition': condition, |
| if (hitCondition != null) 'hitCondition': hitCondition, |
| 'instructionReference': instructionReference, |
| if (offset != null) 'offset': offset, |
| }; |
| } |
| |
| /// Logical areas that can be invalidated by the `invalidated` event. |
| typedef InvalidatedAreas = String; |
| |
| /// Arguments for `launch` request. Additional attributes are implementation |
| /// specific. |
| class LaunchRequestArguments extends RequestArguments { |
| /// Arbitrary data from the previous, restarted session. |
| /// The data is sent as the `restart` attribute of the `terminated` event. |
| /// The client should leave the data intact. |
| final Object? restart; |
| |
| /// If true, the launch request should launch the program without enabling |
| /// debugging. |
| final bool? noDebug; |
| |
| static LaunchRequestArguments fromJson(Map<String, Object?> obj) => |
| LaunchRequestArguments.fromMap(obj); |
| |
| LaunchRequestArguments({ |
| this.restart, |
| this.noDebug, |
| }); |
| |
| LaunchRequestArguments.fromMap(Map<String, Object?> obj) |
| : restart = obj['__restart'], |
| noDebug = obj['noDebug'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['noDebug'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (restart != null) '__restart': restart, |
| if (noDebug != null) 'noDebug': noDebug, |
| }; |
| } |
| |
| /// Response to `launch` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class LaunchResponse extends Response { |
| static LaunchResponse fromJson(Map<String, Object?> obj) => |
| LaunchResponse.fromMap(obj); |
| |
| LaunchResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| LaunchResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `loadedSources` request. |
| class LoadedSourcesArguments extends RequestArguments { |
| static LoadedSourcesArguments fromJson(Map<String, Object?> obj) => |
| LoadedSourcesArguments.fromMap(obj); |
| |
| LoadedSourcesArguments(); |
| |
| LoadedSourcesArguments.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Response to `loadedSources` request. |
| class LoadedSourcesResponse extends Response { |
| static LoadedSourcesResponse fromJson(Map<String, Object?> obj) => |
| LoadedSourcesResponse.fromMap(obj); |
| |
| LoadedSourcesResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| LoadedSourcesResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A structured message object. Used to return errors from requests. |
| class Message { |
| /// A format string for the message. Embedded variables have the form |
| /// `{name}`. |
| /// If variable name starts with an underscore character, the variable does |
| /// not contain user data (PII) and can be safely used for telemetry purposes. |
| final String format; |
| |
| /// Unique (within a debug adapter implementation) identifier for the message. |
| /// The purpose of these error IDs is to help extension authors that have the |
| /// requirement that every user visible error message needs a corresponding |
| /// error number, so that users or customer support can find information about |
| /// the specific error more easily. |
| final int id; |
| |
| /// If true send to telemetry. |
| final bool? sendTelemetry; |
| |
| /// If true show user. |
| final bool? showUser; |
| |
| /// A url where additional information about this message can be found. |
| final String? url; |
| |
| /// A label that is presented to the user as the UI for opening the url. |
| final String? urlLabel; |
| |
| /// An object used as a dictionary for looking up the variables in the format |
| /// string. |
| final Map<String, Object?>? variables; |
| |
| static Message fromJson(Map<String, Object?> obj) => Message.fromMap(obj); |
| |
| Message({ |
| required this.format, |
| required this.id, |
| this.sendTelemetry, |
| this.showUser, |
| this.url, |
| this.urlLabel, |
| this.variables, |
| }); |
| |
| Message.fromMap(Map<String, Object?> obj) |
| : format = obj['format'] as String, |
| id = obj['id'] as int, |
| sendTelemetry = obj['sendTelemetry'] as bool?, |
| showUser = obj['showUser'] as bool?, |
| url = obj['url'] as String?, |
| urlLabel = obj['urlLabel'] as String?, |
| variables = obj['variables'] as Map<String, Object?>?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['format'] is! String) { |
| return false; |
| } |
| if (obj['id'] is! int) { |
| return false; |
| } |
| if (obj['sendTelemetry'] is! bool?) { |
| return false; |
| } |
| if (obj['showUser'] is! bool?) { |
| return false; |
| } |
| if (obj['url'] is! String?) { |
| return false; |
| } |
| if (obj['urlLabel'] is! String?) { |
| return false; |
| } |
| if (obj['variables'] is! Map<String, Object?>?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'format': format, |
| 'id': id, |
| if (sendTelemetry != null) 'sendTelemetry': sendTelemetry, |
| if (showUser != null) 'showUser': showUser, |
| if (url != null) 'url': url, |
| if (urlLabel != null) 'urlLabel': urlLabel, |
| if (variables != null) 'variables': variables, |
| }; |
| } |
| |
| /// A Module object represents a row in the modules view. |
| /// The `id` attribute identifies a module in the modules view and is used in a |
| /// `module` event for identifying a module for adding, updating or deleting. |
| /// The `name` attribute is used to minimally render the module in the UI. |
| /// |
| /// Additional attributes can be added to the module. They show up in the module |
| /// view if they have a corresponding `ColumnDescriptor`. |
| /// |
| /// To avoid an unnecessary proliferation of additional attributes with similar |
| /// semantics but different names, we recommend to re-use attributes from the |
| /// 'recommended' list below first, and only introduce new attributes if nothing |
| /// appropriate could be found. |
| class Module { |
| /// Address range covered by this module. |
| final String? addressRange; |
| |
| /// Module created or modified, encoded as a RFC 3339 timestamp. |
| final String? dateTimeStamp; |
| |
| /// Unique identifier for the module. |
| final Either2<int, String> id; |
| |
| /// True if the module is optimized. |
| final bool? isOptimized; |
| |
| /// True if the module is considered 'user code' by a debugger that supports |
| /// 'Just My Code'. |
| final bool? isUserCode; |
| |
| /// A name of the module. |
| final String name; |
| |
| /// Logical full path to the module. The exact definition is implementation |
| /// defined, but usually this would be a full path to the on-disk file for the |
| /// module. |
| final String? path; |
| |
| /// Logical full path to the symbol file. The exact definition is |
| /// implementation defined. |
| final String? symbolFilePath; |
| |
| /// User-understandable description of if symbols were found for the module |
| /// (ex: 'Symbols Loaded', 'Symbols not found', etc.) |
| final String? symbolStatus; |
| |
| /// Version of Module. |
| final String? version; |
| |
| static Module fromJson(Map<String, Object?> obj) => Module.fromMap(obj); |
| |
| Module({ |
| this.addressRange, |
| this.dateTimeStamp, |
| required this.id, |
| this.isOptimized, |
| this.isUserCode, |
| required this.name, |
| this.path, |
| this.symbolFilePath, |
| this.symbolStatus, |
| this.version, |
| }); |
| |
| Module.fromMap(Map<String, Object?> obj) |
| : addressRange = obj['addressRange'] as String?, |
| dateTimeStamp = obj['dateTimeStamp'] as String?, |
| id = obj['id'] is int |
| ? Either2<int, String>.t1(obj['id'] as int) |
| : Either2<int, String>.t2(obj['id'] as String), |
| isOptimized = obj['isOptimized'] as bool?, |
| isUserCode = obj['isUserCode'] as bool?, |
| name = obj['name'] as String, |
| path = obj['path'] as String?, |
| symbolFilePath = obj['symbolFilePath'] as String?, |
| symbolStatus = obj['symbolStatus'] as String?, |
| version = obj['version'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['addressRange'] is! String?) { |
| return false; |
| } |
| if (obj['dateTimeStamp'] is! String?) { |
| return false; |
| } |
| if ((obj['id'] is! int && obj['id'] is! String)) { |
| return false; |
| } |
| if (obj['isOptimized'] is! bool?) { |
| return false; |
| } |
| if (obj['isUserCode'] is! bool?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['path'] is! String?) { |
| return false; |
| } |
| if (obj['symbolFilePath'] is! String?) { |
| return false; |
| } |
| if (obj['symbolStatus'] is! String?) { |
| return false; |
| } |
| if (obj['version'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (addressRange != null) 'addressRange': addressRange, |
| if (dateTimeStamp != null) 'dateTimeStamp': dateTimeStamp, |
| 'id': id, |
| if (isOptimized != null) 'isOptimized': isOptimized, |
| if (isUserCode != null) 'isUserCode': isUserCode, |
| 'name': name, |
| if (path != null) 'path': path, |
| if (symbolFilePath != null) 'symbolFilePath': symbolFilePath, |
| if (symbolStatus != null) 'symbolStatus': symbolStatus, |
| if (version != null) 'version': version, |
| }; |
| } |
| |
| /// Arguments for `modules` request. |
| class ModulesArguments extends RequestArguments { |
| /// The number of modules to return. If `moduleCount` is not specified or 0, |
| /// all modules are returned. |
| final int? moduleCount; |
| |
| /// The index of the first module to return; if omitted modules start at 0. |
| final int? startModule; |
| |
| static ModulesArguments fromJson(Map<String, Object?> obj) => |
| ModulesArguments.fromMap(obj); |
| |
| ModulesArguments({ |
| this.moduleCount, |
| this.startModule, |
| }); |
| |
| ModulesArguments.fromMap(Map<String, Object?> obj) |
| : moduleCount = obj['moduleCount'] as int?, |
| startModule = obj['startModule'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['moduleCount'] is! int?) { |
| return false; |
| } |
| if (obj['startModule'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (moduleCount != null) 'moduleCount': moduleCount, |
| if (startModule != null) 'startModule': startModule, |
| }; |
| } |
| |
| /// Response to `modules` request. |
| class ModulesResponse extends Response { |
| static ModulesResponse fromJson(Map<String, Object?> obj) => |
| ModulesResponse.fromMap(obj); |
| |
| ModulesResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ModulesResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `next` request. |
| class NextArguments extends RequestArguments { |
| /// Stepping granularity. If no granularity is specified, a granularity of |
| /// `statement` is assumed. |
| final SteppingGranularity? granularity; |
| |
| /// If this flag is true, all other suspended threads are not resumed. |
| final bool? singleThread; |
| |
| /// Specifies the thread for which to resume execution for one step (of the |
| /// given granularity). |
| final int threadId; |
| |
| static NextArguments fromJson(Map<String, Object?> obj) => |
| NextArguments.fromMap(obj); |
| |
| NextArguments({ |
| this.granularity, |
| this.singleThread, |
| required this.threadId, |
| }); |
| |
| NextArguments.fromMap(Map<String, Object?> obj) |
| : granularity = obj['granularity'] as SteppingGranularity?, |
| singleThread = obj['singleThread'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['granularity'] is! SteppingGranularity?) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (granularity != null) 'granularity': granularity, |
| if (singleThread != null) 'singleThread': singleThread, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `next` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class NextResponse extends Response { |
| static NextResponse fromJson(Map<String, Object?> obj) => |
| NextResponse.fromMap(obj); |
| |
| NextResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| NextResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `pause` request. |
| class PauseArguments extends RequestArguments { |
| /// Pause execution for this thread. |
| final int threadId; |
| |
| static PauseArguments fromJson(Map<String, Object?> obj) => |
| PauseArguments.fromMap(obj); |
| |
| PauseArguments({ |
| required this.threadId, |
| }); |
| |
| PauseArguments.fromMap(Map<String, Object?> obj) |
| : threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `pause` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class PauseResponse extends Response { |
| static PauseResponse fromJson(Map<String, Object?> obj) => |
| PauseResponse.fromMap(obj); |
| |
| PauseResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| PauseResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Base class of requests, responses, and events. |
| class ProtocolMessage { |
| /// Sequence number of the message (also known as message ID). The `seq` for |
| /// the first message sent by a client or debug adapter is 1, and for each |
| /// subsequent message is 1 greater than the previous message sent by that |
| /// actor. `seq` can be used to order requests, responses, and events, and to |
| /// associate requests with their corresponding responses. For protocol |
| /// messages of type `request` the sequence number can be used to cancel the |
| /// request. |
| final int seq; |
| |
| /// Message type. |
| final String type; |
| |
| static ProtocolMessage fromJson(Map<String, Object?> obj) => |
| ProtocolMessage.fromMap(obj); |
| |
| ProtocolMessage({ |
| required this.seq, |
| required this.type, |
| }); |
| |
| ProtocolMessage.fromMap(Map<String, Object?> obj) |
| : seq = obj['seq'] as int, |
| type = obj['type'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['seq'] is! int) { |
| return false; |
| } |
| if (obj['type'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'seq': seq, |
| 'type': type, |
| }; |
| } |
| |
| /// Arguments for `readMemory` request. |
| class ReadMemoryArguments extends RequestArguments { |
| /// Number of bytes to read at the specified location and offset. |
| final int count; |
| |
| /// Memory reference to the base location from which data should be read. |
| final String memoryReference; |
| |
| /// Offset (in bytes) to be applied to the reference location before reading |
| /// data. Can be negative. |
| final int? offset; |
| |
| static ReadMemoryArguments fromJson(Map<String, Object?> obj) => |
| ReadMemoryArguments.fromMap(obj); |
| |
| ReadMemoryArguments({ |
| required this.count, |
| required this.memoryReference, |
| this.offset, |
| }); |
| |
| ReadMemoryArguments.fromMap(Map<String, Object?> obj) |
| : count = obj['count'] as int, |
| memoryReference = obj['memoryReference'] as String, |
| offset = obj['offset'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['count'] is! int) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'count': count, |
| 'memoryReference': memoryReference, |
| if (offset != null) 'offset': offset, |
| }; |
| } |
| |
| /// Response to `readMemory` request. |
| class ReadMemoryResponse extends Response { |
| static ReadMemoryResponse fromJson(Map<String, Object?> obj) => |
| ReadMemoryResponse.fromMap(obj); |
| |
| ReadMemoryResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ReadMemoryResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>?) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A client or debug adapter initiated request. |
| class Request extends ProtocolMessage { |
| /// Object containing arguments for the command. |
| final Object? arguments; |
| |
| /// The command to execute. |
| final String command; |
| |
| static Request fromJson(Map<String, Object?> obj) => Request.fromMap(obj); |
| |
| Request({ |
| this.arguments, |
| required this.command, |
| required super.seq, |
| }) : super( |
| type: 'request', |
| ); |
| |
| Request.fromMap(super.obj) |
| : arguments = obj['arguments'], |
| command = obj['command'] as String, |
| super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['command'] is! String) { |
| return false; |
| } |
| if (obj['type'] is! String) { |
| return false; |
| } |
| return ProtocolMessage.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| if (arguments != null) 'arguments': arguments, |
| 'command': command, |
| }; |
| } |
| |
| /// Response for a request. |
| class Response extends ProtocolMessage { |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| final Object? body; |
| |
| /// The command requested. |
| final String command; |
| |
| /// Contains the raw error in short form if `success` is false. |
| /// This raw error might be interpreted by the client and is not shown in the |
| /// UI. |
| /// Some predefined values exist. |
| final String? message; |
| |
| /// Sequence number of the corresponding request. |
| final int requestSeq; |
| |
| /// Outcome of the request. |
| /// If true, the request was successful and the `body` attribute may contain |
| /// the result of the request. |
| /// If the value is false, the attribute `message` contains the error in short |
| /// form and the `body` may contain additional information (see |
| /// `ErrorResponse.body.error`). |
| final bool success; |
| |
| static Response fromJson(Map<String, Object?> obj) => Response.fromMap(obj); |
| |
| Response({ |
| this.body, |
| required this.command, |
| this.message, |
| required this.requestSeq, |
| required this.success, |
| required super.seq, |
| }) : super( |
| type: 'response', |
| ); |
| |
| Response.fromMap(super.obj) |
| : body = obj['body'], |
| command = obj['command'] as String, |
| message = obj['message'] as String?, |
| requestSeq = obj['request_seq'] as int, |
| success = obj['success'] as bool, |
| super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['command'] is! String) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['request_seq'] is! int) { |
| return false; |
| } |
| if (obj['success'] is! bool) { |
| return false; |
| } |
| if (obj['type'] is! String) { |
| return false; |
| } |
| return ProtocolMessage.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| if (body != null) 'body': body, |
| 'command': command, |
| if (message != null) 'message': message, |
| 'request_seq': requestSeq, |
| 'success': success, |
| }; |
| } |
| |
| /// Arguments for `restart` request. |
| class RestartArguments extends RequestArguments { |
| /// The latest version of the `launch` or `attach` configuration. |
| final Either2<LaunchRequestArguments, AttachRequestArguments>? arguments; |
| |
| static RestartArguments fromJson(Map<String, Object?> obj) => |
| RestartArguments.fromMap(obj); |
| |
| RestartArguments({ |
| this.arguments, |
| }); |
| |
| RestartArguments.fromMap(Map<String, Object?> obj) |
| : arguments = LaunchRequestArguments.canParse(obj['arguments']) |
| ? Either2<LaunchRequestArguments, AttachRequestArguments>.t1( |
| LaunchRequestArguments.fromJson( |
| obj['arguments'] as Map<String, Object?>)) |
| : AttachRequestArguments.canParse(obj['arguments']) |
| ? Either2<LaunchRequestArguments, AttachRequestArguments>.t2( |
| AttachRequestArguments.fromJson( |
| obj['arguments'] as Map<String, Object?>)) |
| : null; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((!LaunchRequestArguments.canParse(obj['arguments']) && |
| !AttachRequestArguments.canParse(obj['arguments']) && |
| obj['arguments'] != null)) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (arguments != null) 'arguments': arguments, |
| }; |
| } |
| |
| /// Arguments for `restartFrame` request. |
| class RestartFrameArguments extends RequestArguments { |
| /// Restart the stack frame identified by `frameId`. The `frameId` must have |
| /// been obtained in the current suspended state. See 'Lifetime of Object |
| /// References' in the Overview section for details. |
| final int frameId; |
| |
| static RestartFrameArguments fromJson(Map<String, Object?> obj) => |
| RestartFrameArguments.fromMap(obj); |
| |
| RestartFrameArguments({ |
| required this.frameId, |
| }); |
| |
| RestartFrameArguments.fromMap(Map<String, Object?> obj) |
| : frameId = obj['frameId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['frameId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'frameId': frameId, |
| }; |
| } |
| |
| /// Response to `restartFrame` request. This is just an acknowledgement, so no |
| /// body field is required. |
| class RestartFrameResponse extends Response { |
| static RestartFrameResponse fromJson(Map<String, Object?> obj) => |
| RestartFrameResponse.fromMap(obj); |
| |
| RestartFrameResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| RestartFrameResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Response to `restart` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class RestartResponse extends Response { |
| static RestartResponse fromJson(Map<String, Object?> obj) => |
| RestartResponse.fromMap(obj); |
| |
| RestartResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| RestartResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `reverseContinue` request. |
| class ReverseContinueArguments extends RequestArguments { |
| /// If this flag is true, backward execution is resumed only for the thread |
| /// with given `threadId`. |
| final bool? singleThread; |
| |
| /// Specifies the active thread. If the debug adapter supports single thread |
| /// execution (see `supportsSingleThreadExecutionRequests`) and the |
| /// `singleThread` argument is true, only the thread with this ID is resumed. |
| final int threadId; |
| |
| static ReverseContinueArguments fromJson(Map<String, Object?> obj) => |
| ReverseContinueArguments.fromMap(obj); |
| |
| ReverseContinueArguments({ |
| this.singleThread, |
| required this.threadId, |
| }); |
| |
| ReverseContinueArguments.fromMap(Map<String, Object?> obj) |
| : singleThread = obj['singleThread'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (singleThread != null) 'singleThread': singleThread, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `reverseContinue` request. This is just an acknowledgement, so |
| /// no body field is required. |
| class ReverseContinueResponse extends Response { |
| static ReverseContinueResponse fromJson(Map<String, Object?> obj) => |
| ReverseContinueResponse.fromMap(obj); |
| |
| ReverseContinueResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ReverseContinueResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `runInTerminal` request. |
| class RunInTerminalRequestArguments extends RequestArguments { |
| /// List of arguments. The first argument is the command to run. |
| final List<String> args; |
| |
| /// This property should only be set if the corresponding capability |
| /// `supportsArgsCanBeInterpretedByShell` is true. If the client uses an |
| /// intermediary shell to launch the application, then the client must not |
| /// attempt to escape characters with special meanings for the shell. The user |
| /// is fully responsible for escaping as needed and that arguments using |
| /// special characters may not be portable across shells. |
| final bool? argsCanBeInterpretedByShell; |
| |
| /// Working directory for the command. For non-empty, valid paths this |
| /// typically results in execution of a change directory command. |
| final String cwd; |
| |
| /// Environment key-value pairs that are added to or removed from the default |
| /// environment. |
| final Map<String, Object?>? env; |
| |
| /// What kind of terminal to launch. Defaults to `integrated` if not |
| /// specified. |
| final String? kind; |
| |
| /// Title of the terminal. |
| final String? title; |
| |
| static RunInTerminalRequestArguments fromJson(Map<String, Object?> obj) => |
| RunInTerminalRequestArguments.fromMap(obj); |
| |
| RunInTerminalRequestArguments({ |
| required this.args, |
| this.argsCanBeInterpretedByShell, |
| required this.cwd, |
| this.env, |
| this.kind, |
| this.title, |
| }); |
| |
| RunInTerminalRequestArguments.fromMap(Map<String, Object?> obj) |
| : args = (obj['args'] as List).map((item) => item as String).toList(), |
| argsCanBeInterpretedByShell = |
| obj['argsCanBeInterpretedByShell'] as bool?, |
| cwd = obj['cwd'] as String, |
| env = obj['env'] as Map<String, Object?>?, |
| kind = obj['kind'] as String?, |
| title = obj['title'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['args'] is! List || |
| (obj['args'].any((item) => item is! String)))) { |
| return false; |
| } |
| if (obj['argsCanBeInterpretedByShell'] is! bool?) { |
| return false; |
| } |
| if (obj['cwd'] is! String) { |
| return false; |
| } |
| if (obj['env'] is! Map<String, Object?>?) { |
| return false; |
| } |
| if (obj['kind'] is! String?) { |
| return false; |
| } |
| if (obj['title'] is! String?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'args': args, |
| if (argsCanBeInterpretedByShell != null) |
| 'argsCanBeInterpretedByShell': argsCanBeInterpretedByShell, |
| 'cwd': cwd, |
| if (env != null) 'env': env, |
| if (kind != null) 'kind': kind, |
| if (title != null) 'title': title, |
| }; |
| } |
| |
| /// Response to `runInTerminal` request. |
| class RunInTerminalResponse extends Response { |
| static RunInTerminalResponse fromJson(Map<String, Object?> obj) => |
| RunInTerminalResponse.fromMap(obj); |
| |
| RunInTerminalResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| RunInTerminalResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A `Scope` is a named container for variables. Optionally a scope can map to |
| /// a source or a range within a source. |
| class Scope { |
| /// Start position of the range covered by the scope. It is measured in UTF-16 |
| /// code units and the client capability `columnsStartAt1` determines whether |
| /// it is 0- or 1-based. |
| final int? column; |
| |
| /// End position of the range covered by the scope. It is measured in UTF-16 |
| /// code units and the client capability `columnsStartAt1` determines whether |
| /// it is 0- or 1-based. |
| final int? endColumn; |
| |
| /// The end line of the range covered by this scope. |
| final int? endLine; |
| |
| /// If true, the number of variables in this scope is large or expensive to |
| /// retrieve. |
| final bool expensive; |
| |
| /// The number of indexed variables in this scope. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| final int? indexedVariables; |
| |
| /// The start line of the range covered by this scope. |
| final int? line; |
| |
| /// Name of the scope such as 'Arguments', 'Locals', or 'Registers'. This |
| /// string is shown in the UI as is and can be translated. |
| final String name; |
| |
| /// The number of named variables in this scope. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| final int? namedVariables; |
| |
| /// A hint for how to present this scope in the UI. If this attribute is |
| /// missing, the scope is shown with a generic UI. |
| final String? presentationHint; |
| |
| /// The source for this scope. |
| final Source? source; |
| |
| /// The variables of this scope can be retrieved by passing the value of |
| /// `variablesReference` to the `variables` request as long as execution |
| /// remains suspended. See 'Lifetime of Object References' in the Overview |
| /// section for details. |
| final int variablesReference; |
| |
| static Scope fromJson(Map<String, Object?> obj) => Scope.fromMap(obj); |
| |
| Scope({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.expensive, |
| this.indexedVariables, |
| this.line, |
| required this.name, |
| this.namedVariables, |
| this.presentationHint, |
| this.source, |
| required this.variablesReference, |
| }); |
| |
| Scope.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| expensive = obj['expensive'] as bool, |
| indexedVariables = obj['indexedVariables'] as int?, |
| line = obj['line'] as int?, |
| name = obj['name'] as String, |
| namedVariables = obj['namedVariables'] as int?, |
| presentationHint = obj['presentationHint'] as String?, |
| source = obj['source'] == null |
| ? null |
| : Source.fromJson(obj['source'] as Map<String, Object?>), |
| variablesReference = obj['variablesReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['expensive'] is! bool) { |
| return false; |
| } |
| if (obj['indexedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['namedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['presentationHint'] is! String?) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'expensive': expensive, |
| if (indexedVariables != null) 'indexedVariables': indexedVariables, |
| if (line != null) 'line': line, |
| 'name': name, |
| if (namedVariables != null) 'namedVariables': namedVariables, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| if (source != null) 'source': source, |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Arguments for `scopes` request. |
| class ScopesArguments extends RequestArguments { |
| /// Retrieve the scopes for the stack frame identified by `frameId`. The |
| /// `frameId` must have been obtained in the current suspended state. See |
| /// 'Lifetime of Object References' in the Overview section for details. |
| final int frameId; |
| |
| static ScopesArguments fromJson(Map<String, Object?> obj) => |
| ScopesArguments.fromMap(obj); |
| |
| ScopesArguments({ |
| required this.frameId, |
| }); |
| |
| ScopesArguments.fromMap(Map<String, Object?> obj) |
| : frameId = obj['frameId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['frameId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'frameId': frameId, |
| }; |
| } |
| |
| /// Response to `scopes` request. |
| class ScopesResponse extends Response { |
| static ScopesResponse fromJson(Map<String, Object?> obj) => |
| ScopesResponse.fromMap(obj); |
| |
| ScopesResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ScopesResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setBreakpoints` request. |
| class SetBreakpointsArguments extends RequestArguments { |
| /// The code locations of the breakpoints. |
| final List<SourceBreakpoint>? breakpoints; |
| |
| /// Deprecated: The code locations of the breakpoints. |
| final List<int>? lines; |
| |
| /// The source location of the breakpoints; either `source.path` or |
| /// `source.sourceReference` must be specified. |
| final Source source; |
| |
| /// A value of true indicates that the underlying source has been modified |
| /// which results in new breakpoint locations. |
| final bool? sourceModified; |
| |
| static SetBreakpointsArguments fromJson(Map<String, Object?> obj) => |
| SetBreakpointsArguments.fromMap(obj); |
| |
| SetBreakpointsArguments({ |
| this.breakpoints, |
| this.lines, |
| required this.source, |
| this.sourceModified, |
| }); |
| |
| SetBreakpointsArguments.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List?) |
| ?.map((item) => |
| SourceBreakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| lines = (obj['lines'] as List?)?.map((item) => item as int).toList(), |
| source = Source.fromJson(obj['source'] as Map<String, Object?>), |
| sourceModified = obj['sourceModified'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !SourceBreakpoint.canParse(item))))) { |
| return false; |
| } |
| if ((obj['lines'] is! List || (obj['lines'].any((item) => item is! int)))) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| if (obj['sourceModified'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (breakpoints != null) 'breakpoints': breakpoints, |
| if (lines != null) 'lines': lines, |
| 'source': source, |
| if (sourceModified != null) 'sourceModified': sourceModified, |
| }; |
| } |
| |
| /// Response to `setBreakpoints` request. |
| /// Returned is information about each breakpoint created by this request. |
| /// This includes the actual code location and whether the breakpoint could be |
| /// verified. |
| /// The breakpoints returned are in the same order as the elements of the |
| /// `breakpoints` |
| /// (or the deprecated `lines`) array in the arguments. |
| class SetBreakpointsResponse extends Response { |
| static SetBreakpointsResponse fromJson(Map<String, Object?> obj) => |
| SetBreakpointsResponse.fromMap(obj); |
| |
| SetBreakpointsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetBreakpointsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setDataBreakpoints` request. |
| class SetDataBreakpointsArguments extends RequestArguments { |
| /// The contents of this array replaces all existing data breakpoints. An |
| /// empty array clears all data breakpoints. |
| final List<DataBreakpoint> breakpoints; |
| |
| static SetDataBreakpointsArguments fromJson(Map<String, Object?> obj) => |
| SetDataBreakpointsArguments.fromMap(obj); |
| |
| SetDataBreakpointsArguments({ |
| required this.breakpoints, |
| }); |
| |
| SetDataBreakpointsArguments.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map( |
| (item) => DataBreakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !DataBreakpoint.canParse(item))))) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| /// Response to `setDataBreakpoints` request. |
| /// Returned is information about each breakpoint created by this request. |
| class SetDataBreakpointsResponse extends Response { |
| static SetDataBreakpointsResponse fromJson(Map<String, Object?> obj) => |
| SetDataBreakpointsResponse.fromMap(obj); |
| |
| SetDataBreakpointsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetDataBreakpointsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setExceptionBreakpoints` request. |
| class SetExceptionBreakpointsArguments extends RequestArguments { |
| /// Configuration options for selected exceptions. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsExceptionOptions` is true. |
| final List<ExceptionOptions>? exceptionOptions; |
| |
| /// Set of exception filters and their options. The set of all possible |
| /// exception filters is defined by the `exceptionBreakpointFilters` |
| /// capability. This attribute is only honored by a debug adapter if the |
| /// corresponding capability `supportsExceptionFilterOptions` is true. The |
| /// `filter` and `filterOptions` sets are additive. |
| final List<ExceptionFilterOptions>? filterOptions; |
| |
| /// Set of exception filters specified by their ID. The set of all possible |
| /// exception filters is defined by the `exceptionBreakpointFilters` |
| /// capability. The `filter` and `filterOptions` sets are additive. |
| final List<String> filters; |
| |
| static SetExceptionBreakpointsArguments fromJson(Map<String, Object?> obj) => |
| SetExceptionBreakpointsArguments.fromMap(obj); |
| |
| SetExceptionBreakpointsArguments({ |
| this.exceptionOptions, |
| this.filterOptions, |
| required this.filters, |
| }); |
| |
| SetExceptionBreakpointsArguments.fromMap(Map<String, Object?> obj) |
| : exceptionOptions = (obj['exceptionOptions'] as List?) |
| ?.map((item) => |
| ExceptionOptions.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| filterOptions = (obj['filterOptions'] as List?) |
| ?.map((item) => |
| ExceptionFilterOptions.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| filters = |
| (obj['filters'] as List).map((item) => item as String).toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['exceptionOptions'] is! List || |
| (obj['exceptionOptions'] |
| .any((item) => !ExceptionOptions.canParse(item))))) { |
| return false; |
| } |
| if ((obj['filterOptions'] is! List || |
| (obj['filterOptions'] |
| .any((item) => !ExceptionFilterOptions.canParse(item))))) { |
| return false; |
| } |
| if ((obj['filters'] is! List || |
| (obj['filters'].any((item) => item is! String)))) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (exceptionOptions != null) 'exceptionOptions': exceptionOptions, |
| if (filterOptions != null) 'filterOptions': filterOptions, |
| 'filters': filters, |
| }; |
| } |
| |
| /// Response to `setExceptionBreakpoints` request. |
| /// The response contains an array of `Breakpoint` objects with information |
| /// about each exception breakpoint or filter. The `Breakpoint` objects are in |
| /// the same order as the elements of the `filters`, `filterOptions`, |
| /// `exceptionOptions` arrays given as arguments. If both `filters` and |
| /// `filterOptions` are given, the returned array must start with `filters` |
| /// information first, followed by `filterOptions` information. |
| /// The `verified` property of a `Breakpoint` object signals whether the |
| /// exception breakpoint or filter could be successfully created and whether the |
| /// condition or hit count expressions are valid. In case of an error the |
| /// `message` property explains the problem. The `id` property can be used to |
| /// introduce a unique ID for the exception breakpoint or filter so that it can |
| /// be updated subsequently by sending breakpoint events. |
| /// For backward compatibility both the `breakpoints` array and the enclosing |
| /// `body` are optional. If these elements are missing a client is not able to |
| /// show problems for individual exception breakpoints or filters. |
| class SetExceptionBreakpointsResponse extends Response { |
| static SetExceptionBreakpointsResponse fromJson(Map<String, Object?> obj) => |
| SetExceptionBreakpointsResponse.fromMap(obj); |
| |
| SetExceptionBreakpointsResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetExceptionBreakpointsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>?) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setExpression` request. |
| class SetExpressionArguments extends RequestArguments { |
| /// The l-value expression to assign to. |
| final String expression; |
| |
| /// Specifies how the resulting value should be formatted. |
| final ValueFormat? format; |
| |
| /// Evaluate the expressions in the scope of this stack frame. If not |
| /// specified, the expressions are evaluated in the global scope. |
| final int? frameId; |
| |
| /// The value expression to assign to the l-value expression. |
| final String value; |
| |
| static SetExpressionArguments fromJson(Map<String, Object?> obj) => |
| SetExpressionArguments.fromMap(obj); |
| |
| SetExpressionArguments({ |
| required this.expression, |
| this.format, |
| this.frameId, |
| required this.value, |
| }); |
| |
| SetExpressionArguments.fromMap(Map<String, Object?> obj) |
| : expression = obj['expression'] as String, |
| format = obj['format'] == null |
| ? null |
| : ValueFormat.fromJson(obj['format'] as Map<String, Object?>), |
| frameId = obj['frameId'] as int?, |
| value = obj['value'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['expression'] is! String) { |
| return false; |
| } |
| if (!ValueFormat.canParse(obj['format'])) { |
| return false; |
| } |
| if (obj['frameId'] is! int?) { |
| return false; |
| } |
| if (obj['value'] is! String) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'expression': expression, |
| if (format != null) 'format': format, |
| if (frameId != null) 'frameId': frameId, |
| 'value': value, |
| }; |
| } |
| |
| /// Response to `setExpression` request. |
| class SetExpressionResponse extends Response { |
| static SetExpressionResponse fromJson(Map<String, Object?> obj) => |
| SetExpressionResponse.fromMap(obj); |
| |
| SetExpressionResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetExpressionResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setFunctionBreakpoints` request. |
| class SetFunctionBreakpointsArguments extends RequestArguments { |
| /// The function names of the breakpoints. |
| final List<FunctionBreakpoint> breakpoints; |
| |
| static SetFunctionBreakpointsArguments fromJson(Map<String, Object?> obj) => |
| SetFunctionBreakpointsArguments.fromMap(obj); |
| |
| SetFunctionBreakpointsArguments({ |
| required this.breakpoints, |
| }); |
| |
| SetFunctionBreakpointsArguments.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => |
| FunctionBreakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'] |
| .any((item) => !FunctionBreakpoint.canParse(item))))) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| /// Response to `setFunctionBreakpoints` request. |
| /// Returned is information about each breakpoint created by this request. |
| class SetFunctionBreakpointsResponse extends Response { |
| static SetFunctionBreakpointsResponse fromJson(Map<String, Object?> obj) => |
| SetFunctionBreakpointsResponse.fromMap(obj); |
| |
| SetFunctionBreakpointsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetFunctionBreakpointsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setInstructionBreakpoints` request |
| class SetInstructionBreakpointsArguments extends RequestArguments { |
| /// The instruction references of the breakpoints |
| final List<InstructionBreakpoint> breakpoints; |
| |
| static SetInstructionBreakpointsArguments fromJson( |
| Map<String, Object?> obj) => |
| SetInstructionBreakpointsArguments.fromMap(obj); |
| |
| SetInstructionBreakpointsArguments({ |
| required this.breakpoints, |
| }); |
| |
| SetInstructionBreakpointsArguments.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => |
| InstructionBreakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'] |
| .any((item) => !InstructionBreakpoint.canParse(item))))) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| /// Response to `setInstructionBreakpoints` request |
| class SetInstructionBreakpointsResponse extends Response { |
| static SetInstructionBreakpointsResponse fromJson(Map<String, Object?> obj) => |
| SetInstructionBreakpointsResponse.fromMap(obj); |
| |
| SetInstructionBreakpointsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetInstructionBreakpointsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `setVariable` request. |
| class SetVariableArguments extends RequestArguments { |
| /// Specifies details on how to format the response value. |
| final ValueFormat? format; |
| |
| /// The name of the variable in the container. |
| final String name; |
| |
| /// The value of the variable. |
| final String value; |
| |
| /// The reference of the variable container. The `variablesReference` must |
| /// have been obtained in the current suspended state. See 'Lifetime of Object |
| /// References' in the Overview section for details. |
| final int variablesReference; |
| |
| static SetVariableArguments fromJson(Map<String, Object?> obj) => |
| SetVariableArguments.fromMap(obj); |
| |
| SetVariableArguments({ |
| this.format, |
| required this.name, |
| required this.value, |
| required this.variablesReference, |
| }); |
| |
| SetVariableArguments.fromMap(Map<String, Object?> obj) |
| : format = obj['format'] == null |
| ? null |
| : ValueFormat.fromJson(obj['format'] as Map<String, Object?>), |
| name = obj['name'] as String, |
| value = obj['value'] as String, |
| variablesReference = obj['variablesReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!ValueFormat.canParse(obj['format'])) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['value'] is! String) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (format != null) 'format': format, |
| 'name': name, |
| 'value': value, |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Response to `setVariable` request. |
| class SetVariableResponse extends Response { |
| static SetVariableResponse fromJson(Map<String, Object?> obj) => |
| SetVariableResponse.fromMap(obj); |
| |
| SetVariableResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SetVariableResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A `Source` is a descriptor for source code. |
| /// It is returned from the debug adapter as part of a `StackFrame` and it is |
| /// used by clients when specifying breakpoints. |
| class Source { |
| /// Additional data that a debug adapter might want to loop through the |
| /// client. |
| /// The client should leave the data intact and persist it across sessions. |
| /// The client should not interpret the data. |
| final Object? adapterData; |
| |
| /// The checksums associated with this file. |
| final List<Checksum>? checksums; |
| |
| /// The short name of the source. Every source returned from the debug adapter |
| /// has a name. |
| /// When sending a source to the debug adapter this name is optional. |
| final String? name; |
| |
| /// The origin of this source. For example, 'internal module', 'inlined |
| /// content from source map', etc. |
| final String? origin; |
| |
| /// The path of the source to be shown in the UI. |
| /// It is only used to locate and load the content of the source if no |
| /// `sourceReference` is specified (or its value is 0). |
| final String? path; |
| |
| /// A hint for how to present the source in the UI. |
| /// A value of `deemphasize` can be used to indicate that the source is not |
| /// available or that it is skipped on stepping. |
| final String? presentationHint; |
| |
| /// If the value > 0 the contents of the source must be retrieved through the |
| /// `source` request (even if a path is specified). |
| /// Since a `sourceReference` is only valid for a session, it can not be used |
| /// to persist a source. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? sourceReference; |
| |
| /// A list of sources that are related to this source. These may be the source |
| /// that generated this source. |
| final List<Source>? sources; |
| |
| static Source fromJson(Map<String, Object?> obj) => Source.fromMap(obj); |
| |
| Source({ |
| this.adapterData, |
| this.checksums, |
| this.name, |
| this.origin, |
| this.path, |
| this.presentationHint, |
| this.sourceReference, |
| this.sources, |
| }); |
| |
| Source.fromMap(Map<String, Object?> obj) |
| : adapterData = obj['adapterData'], |
| checksums = (obj['checksums'] as List?) |
| ?.map((item) => Checksum.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| name = obj['name'] as String?, |
| origin = obj['origin'] as String?, |
| path = obj['path'] as String?, |
| presentationHint = obj['presentationHint'] as String?, |
| sourceReference = obj['sourceReference'] as int?, |
| sources = (obj['sources'] as List?) |
| ?.map((item) => Source.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['checksums'] is! List || |
| (obj['checksums'].any((item) => !Checksum.canParse(item))))) { |
| return false; |
| } |
| if (obj['name'] is! String?) { |
| return false; |
| } |
| if (obj['origin'] is! String?) { |
| return false; |
| } |
| if (obj['path'] is! String?) { |
| return false; |
| } |
| if (obj['presentationHint'] is! String?) { |
| return false; |
| } |
| if (obj['sourceReference'] is! int?) { |
| return false; |
| } |
| if ((obj['sources'] is! List || |
| (obj['sources'].any((item) => !Source.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (adapterData != null) 'adapterData': adapterData, |
| if (checksums != null) 'checksums': checksums, |
| if (name != null) 'name': name, |
| if (origin != null) 'origin': origin, |
| if (path != null) 'path': path, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| if (sourceReference != null) 'sourceReference': sourceReference, |
| if (sources != null) 'sources': sources, |
| }; |
| } |
| |
| /// Arguments for `source` request. |
| class SourceArguments extends RequestArguments { |
| /// Specifies the source content to load. Either `source.path` or |
| /// `source.sourceReference` must be specified. |
| final Source? source; |
| |
| /// The reference to the source. This is the same as `source.sourceReference`. |
| /// This is provided for backward compatibility since old clients do not |
| /// understand the `source` attribute. |
| final int sourceReference; |
| |
| static SourceArguments fromJson(Map<String, Object?> obj) => |
| SourceArguments.fromMap(obj); |
| |
| SourceArguments({ |
| this.source, |
| required this.sourceReference, |
| }); |
| |
| SourceArguments.fromMap(Map<String, Object?> obj) |
| : source = obj['source'] == null |
| ? null |
| : Source.fromJson(obj['source'] as Map<String, Object?>), |
| sourceReference = obj['sourceReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| if (obj['sourceReference'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (source != null) 'source': source, |
| 'sourceReference': sourceReference, |
| }; |
| } |
| |
| /// Properties of a breakpoint or logpoint passed to the `setBreakpoints` |
| /// request. |
| class SourceBreakpoint { |
| /// Start position within source line of the breakpoint or logpoint. It is |
| /// measured in UTF-16 code units and the client capability `columnsStartAt1` |
| /// determines whether it is 0- or 1-based. |
| final int? column; |
| |
| /// The expression for conditional breakpoints. |
| /// It is only honored by a debug adapter if the corresponding capability |
| /// `supportsConditionalBreakpoints` is true. |
| final String? condition; |
| |
| /// The expression that controls how many hits of the breakpoint are ignored. |
| /// The debug adapter is expected to interpret the expression as needed. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsHitConditionalBreakpoints` is true. |
| /// If both this property and `condition` are specified, `hitCondition` should |
| /// be evaluated only if the `condition` is met, and the debug adapter should |
| /// stop only if both conditions are met. |
| final String? hitCondition; |
| |
| /// The source line of the breakpoint or logpoint. |
| final int line; |
| |
| /// If this attribute exists and is non-empty, the debug adapter must not |
| /// 'break' (stop) |
| /// but log the message instead. Expressions within `{}` are interpolated. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsLogPoints` is true. |
| /// If either `hitCondition` or `condition` is specified, then the message |
| /// should only be logged if those conditions are met. |
| final String? logMessage; |
| |
| static SourceBreakpoint fromJson(Map<String, Object?> obj) => |
| SourceBreakpoint.fromMap(obj); |
| |
| SourceBreakpoint({ |
| this.column, |
| this.condition, |
| this.hitCondition, |
| required this.line, |
| this.logMessage, |
| }); |
| |
| SourceBreakpoint.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| condition = obj['condition'] as String?, |
| hitCondition = obj['hitCondition'] as String?, |
| line = obj['line'] as int, |
| logMessage = obj['logMessage'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['condition'] is! String?) { |
| return false; |
| } |
| if (obj['hitCondition'] is! String?) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| if (obj['logMessage'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (condition != null) 'condition': condition, |
| if (hitCondition != null) 'hitCondition': hitCondition, |
| 'line': line, |
| if (logMessage != null) 'logMessage': logMessage, |
| }; |
| } |
| |
| /// Response to `source` request. |
| class SourceResponse extends Response { |
| static SourceResponse fromJson(Map<String, Object?> obj) => |
| SourceResponse.fromMap(obj); |
| |
| SourceResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| SourceResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A Stackframe contains the source location. |
| class StackFrame { |
| /// Indicates whether this frame can be restarted with the `restart` request. |
| /// Clients should only use this if the debug adapter supports the `restart` |
| /// request and the corresponding capability `supportsRestartRequest` is true. |
| /// If a debug adapter has this capability, then `canRestart` defaults to |
| /// `true` if the property is absent. |
| final bool? canRestart; |
| |
| /// Start position of the range covered by the stack frame. It is measured in |
| /// UTF-16 code units and the client capability `columnsStartAt1` determines |
| /// whether it is 0- or 1-based. If attribute `source` is missing or doesn't |
| /// exist, `column` is 0 and should be ignored by the client. |
| final int column; |
| |
| /// End position of the range covered by the stack frame. It is measured in |
| /// UTF-16 code units and the client capability `columnsStartAt1` determines |
| /// whether it is 0- or 1-based. |
| final int? endColumn; |
| |
| /// The end line of the range covered by the stack frame. |
| final int? endLine; |
| |
| /// An identifier for the stack frame. It must be unique across all threads. |
| /// This id can be used to retrieve the scopes of the frame with the `scopes` |
| /// request or to restart the execution of a stack frame. |
| final int id; |
| |
| /// A memory reference for the current instruction pointer in this frame. |
| final String? instructionPointerReference; |
| |
| /// The line within the source of the frame. If the source attribute is |
| /// missing or doesn't exist, `line` is 0 and should be ignored by the client. |
| final int line; |
| |
| /// The module associated with this frame, if any. |
| final Either2<int, String>? moduleId; |
| |
| /// The name of the stack frame, typically a method name. |
| final String name; |
| |
| /// A hint for how to present this frame in the UI. |
| /// A value of `label` can be used to indicate that the frame is an artificial |
| /// frame that is used as a visual label or separator. A value of `subtle` can |
| /// be used to change the appearance of a frame in a 'subtle' way. |
| final String? presentationHint; |
| |
| /// The source of the frame. |
| final Source? source; |
| |
| static StackFrame fromJson(Map<String, Object?> obj) => |
| StackFrame.fromMap(obj); |
| |
| StackFrame({ |
| this.canRestart, |
| required this.column, |
| this.endColumn, |
| this.endLine, |
| required this.id, |
| this.instructionPointerReference, |
| required this.line, |
| this.moduleId, |
| required this.name, |
| this.presentationHint, |
| this.source, |
| }); |
| |
| StackFrame.fromMap(Map<String, Object?> obj) |
| : canRestart = obj['canRestart'] as bool?, |
| column = obj['column'] as int, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| id = obj['id'] as int, |
| instructionPointerReference = |
| obj['instructionPointerReference'] as String?, |
| line = obj['line'] as int, |
| moduleId = obj['moduleId'] is int |
| ? Either2<int, String>.t1(obj['moduleId'] as int) |
| : obj['moduleId'] is String |
| ? Either2<int, String>.t2(obj['moduleId'] as String) |
| : null, |
| name = obj['name'] as String, |
| presentationHint = obj['presentationHint'] as String?, |
| source = obj['source'] == null |
| ? null |
| : Source.fromJson(obj['source'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['canRestart'] is! bool?) { |
| return false; |
| } |
| if (obj['column'] is! int) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['id'] is! int) { |
| return false; |
| } |
| if (obj['instructionPointerReference'] is! String?) { |
| return false; |
| } |
| if (obj['line'] is! int) { |
| return false; |
| } |
| if ((obj['moduleId'] is! int && |
| obj['moduleId'] is! String && |
| obj['moduleId'] != null)) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['presentationHint'] is! String?) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (canRestart != null) 'canRestart': canRestart, |
| 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'id': id, |
| if (instructionPointerReference != null) |
| 'instructionPointerReference': instructionPointerReference, |
| 'line': line, |
| if (moduleId != null) 'moduleId': moduleId, |
| 'name': name, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| if (source != null) 'source': source, |
| }; |
| } |
| |
| /// Provides formatting information for a stack frame. |
| class StackFrameFormat extends ValueFormat { |
| /// Includes all stack frames, including those the debug adapter might |
| /// otherwise hide. |
| final bool? includeAll; |
| |
| /// Displays the line number of the stack frame. |
| final bool? line; |
| |
| /// Displays the module of the stack frame. |
| final bool? module; |
| |
| /// Displays the names of parameters for the stack frame. |
| final bool? parameterNames; |
| |
| /// Displays the types of parameters for the stack frame. |
| final bool? parameterTypes; |
| |
| /// Displays the values of parameters for the stack frame. |
| final bool? parameterValues; |
| |
| /// Displays parameters for the stack frame. |
| final bool? parameters; |
| |
| static StackFrameFormat fromJson(Map<String, Object?> obj) => |
| StackFrameFormat.fromMap(obj); |
| |
| StackFrameFormat({ |
| this.includeAll, |
| this.line, |
| this.module, |
| this.parameterNames, |
| this.parameterTypes, |
| this.parameterValues, |
| this.parameters, |
| super.hex, |
| }); |
| |
| StackFrameFormat.fromMap(super.obj) |
| : includeAll = obj['includeAll'] as bool?, |
| line = obj['line'] as bool?, |
| module = obj['module'] as bool?, |
| parameterNames = obj['parameterNames'] as bool?, |
| parameterTypes = obj['parameterTypes'] as bool?, |
| parameterValues = obj['parameterValues'] as bool?, |
| parameters = obj['parameters'] as bool?, |
| super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['includeAll'] is! bool?) { |
| return false; |
| } |
| if (obj['line'] is! bool?) { |
| return false; |
| } |
| if (obj['module'] is! bool?) { |
| return false; |
| } |
| if (obj['parameterNames'] is! bool?) { |
| return false; |
| } |
| if (obj['parameterTypes'] is! bool?) { |
| return false; |
| } |
| if (obj['parameterValues'] is! bool?) { |
| return false; |
| } |
| if (obj['parameters'] is! bool?) { |
| return false; |
| } |
| return ValueFormat.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| if (includeAll != null) 'includeAll': includeAll, |
| if (line != null) 'line': line, |
| if (module != null) 'module': module, |
| if (parameterNames != null) 'parameterNames': parameterNames, |
| if (parameterTypes != null) 'parameterTypes': parameterTypes, |
| if (parameterValues != null) 'parameterValues': parameterValues, |
| if (parameters != null) 'parameters': parameters, |
| }; |
| } |
| |
| /// Arguments for `stackTrace` request. |
| class StackTraceArguments extends RequestArguments { |
| /// Specifies details on how to format the stack frames. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsValueFormattingOptions` is true. |
| final StackFrameFormat? format; |
| |
| /// The maximum number of frames to return. If levels is not specified or 0, |
| /// all frames are returned. |
| final int? levels; |
| |
| /// The index of the first frame to return; if omitted frames start at 0. |
| final int? startFrame; |
| |
| /// Retrieve the stacktrace for this thread. |
| final int threadId; |
| |
| static StackTraceArguments fromJson(Map<String, Object?> obj) => |
| StackTraceArguments.fromMap(obj); |
| |
| StackTraceArguments({ |
| this.format, |
| this.levels, |
| this.startFrame, |
| required this.threadId, |
| }); |
| |
| StackTraceArguments.fromMap(Map<String, Object?> obj) |
| : format = obj['format'] == null |
| ? null |
| : StackFrameFormat.fromJson(obj['format'] as Map<String, Object?>), |
| levels = obj['levels'] as int?, |
| startFrame = obj['startFrame'] as int?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!StackFrameFormat.canParse(obj['format'])) { |
| return false; |
| } |
| if (obj['levels'] is! int?) { |
| return false; |
| } |
| if (obj['startFrame'] is! int?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (format != null) 'format': format, |
| if (levels != null) 'levels': levels, |
| if (startFrame != null) 'startFrame': startFrame, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `stackTrace` request. |
| class StackTraceResponse extends Response { |
| static StackTraceResponse fromJson(Map<String, Object?> obj) => |
| StackTraceResponse.fromMap(obj); |
| |
| StackTraceResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StackTraceResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `startDebugging` request. |
| class StartDebuggingRequestArguments extends RequestArguments { |
| /// Arguments passed to the new debug session. The arguments must only contain |
| /// properties understood by the `launch` or `attach` requests of the debug |
| /// adapter and they must not contain any client-specific properties (e.g. |
| /// `type`) or client-specific features (e.g. substitutable 'variables'). |
| final Map<String, Object?> configuration; |
| |
| /// Indicates whether the new debug session should be started with a `launch` |
| /// or `attach` request. |
| final String request; |
| |
| static StartDebuggingRequestArguments fromJson(Map<String, Object?> obj) => |
| StartDebuggingRequestArguments.fromMap(obj); |
| |
| StartDebuggingRequestArguments({ |
| required this.configuration, |
| required this.request, |
| }); |
| |
| StartDebuggingRequestArguments.fromMap(Map<String, Object?> obj) |
| : configuration = obj['configuration'] as Map<String, Object?>, |
| request = obj['request'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['configuration'] is! Map<String, Object?>) { |
| return false; |
| } |
| if (obj['request'] is! String) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'configuration': configuration, |
| 'request': request, |
| }; |
| } |
| |
| /// Response to `startDebugging` request. This is just an acknowledgement, so no |
| /// body field is required. |
| class StartDebuggingResponse extends Response { |
| static StartDebuggingResponse fromJson(Map<String, Object?> obj) => |
| StartDebuggingResponse.fromMap(obj); |
| |
| StartDebuggingResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StartDebuggingResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `stepBack` request. |
| class StepBackArguments extends RequestArguments { |
| /// Stepping granularity to step. If no granularity is specified, a |
| /// granularity of `statement` is assumed. |
| final SteppingGranularity? granularity; |
| |
| /// If this flag is true, all other suspended threads are not resumed. |
| final bool? singleThread; |
| |
| /// Specifies the thread for which to resume execution for one step backwards |
| /// (of the given granularity). |
| final int threadId; |
| |
| static StepBackArguments fromJson(Map<String, Object?> obj) => |
| StepBackArguments.fromMap(obj); |
| |
| StepBackArguments({ |
| this.granularity, |
| this.singleThread, |
| required this.threadId, |
| }); |
| |
| StepBackArguments.fromMap(Map<String, Object?> obj) |
| : granularity = obj['granularity'] as SteppingGranularity?, |
| singleThread = obj['singleThread'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['granularity'] is! SteppingGranularity?) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (granularity != null) 'granularity': granularity, |
| if (singleThread != null) 'singleThread': singleThread, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `stepBack` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class StepBackResponse extends Response { |
| static StepBackResponse fromJson(Map<String, Object?> obj) => |
| StepBackResponse.fromMap(obj); |
| |
| StepBackResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StepBackResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `stepIn` request. |
| class StepInArguments extends RequestArguments { |
| /// Stepping granularity. If no granularity is specified, a granularity of |
| /// `statement` is assumed. |
| final SteppingGranularity? granularity; |
| |
| /// If this flag is true, all other suspended threads are not resumed. |
| final bool? singleThread; |
| |
| /// Id of the target to step into. |
| final int? targetId; |
| |
| /// Specifies the thread for which to resume execution for one step-into (of |
| /// the given granularity). |
| final int threadId; |
| |
| static StepInArguments fromJson(Map<String, Object?> obj) => |
| StepInArguments.fromMap(obj); |
| |
| StepInArguments({ |
| this.granularity, |
| this.singleThread, |
| this.targetId, |
| required this.threadId, |
| }); |
| |
| StepInArguments.fromMap(Map<String, Object?> obj) |
| : granularity = obj['granularity'] as SteppingGranularity?, |
| singleThread = obj['singleThread'] as bool?, |
| targetId = obj['targetId'] as int?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['granularity'] is! SteppingGranularity?) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['targetId'] is! int?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (granularity != null) 'granularity': granularity, |
| if (singleThread != null) 'singleThread': singleThread, |
| if (targetId != null) 'targetId': targetId, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `stepIn` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class StepInResponse extends Response { |
| static StepInResponse fromJson(Map<String, Object?> obj) => |
| StepInResponse.fromMap(obj); |
| |
| StepInResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StepInResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A `StepInTarget` can be used in the `stepIn` request and determines into |
| /// which single target the `stepIn` request should step. |
| class StepInTarget { |
| /// Start position of the range covered by the step in target. It is measured |
| /// in UTF-16 code units and the client capability `columnsStartAt1` |
| /// determines whether it is 0- or 1-based. |
| final int? column; |
| |
| /// End position of the range covered by the step in target. It is measured in |
| /// UTF-16 code units and the client capability `columnsStartAt1` determines |
| /// whether it is 0- or 1-based. |
| final int? endColumn; |
| |
| /// The end line of the range covered by the step-in target. |
| final int? endLine; |
| |
| /// Unique identifier for a step-in target. |
| final int id; |
| |
| /// The name of the step-in target (shown in the UI). |
| final String label; |
| |
| /// The line of the step-in target. |
| final int? line; |
| |
| static StepInTarget fromJson(Map<String, Object?> obj) => |
| StepInTarget.fromMap(obj); |
| |
| StepInTarget({ |
| this.column, |
| this.endColumn, |
| this.endLine, |
| required this.id, |
| required this.label, |
| this.line, |
| }); |
| |
| StepInTarget.fromMap(Map<String, Object?> obj) |
| : column = obj['column'] as int?, |
| endColumn = obj['endColumn'] as int?, |
| endLine = obj['endLine'] as int?, |
| id = obj['id'] as int, |
| label = obj['label'] as String, |
| line = obj['line'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['endColumn'] is! int?) { |
| return false; |
| } |
| if (obj['endLine'] is! int?) { |
| return false; |
| } |
| if (obj['id'] is! int) { |
| return false; |
| } |
| if (obj['label'] is! String) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (column != null) 'column': column, |
| if (endColumn != null) 'endColumn': endColumn, |
| if (endLine != null) 'endLine': endLine, |
| 'id': id, |
| 'label': label, |
| if (line != null) 'line': line, |
| }; |
| } |
| |
| /// Arguments for `stepInTargets` request. |
| class StepInTargetsArguments extends RequestArguments { |
| /// The stack frame for which to retrieve the possible step-in targets. |
| final int frameId; |
| |
| static StepInTargetsArguments fromJson(Map<String, Object?> obj) => |
| StepInTargetsArguments.fromMap(obj); |
| |
| StepInTargetsArguments({ |
| required this.frameId, |
| }); |
| |
| StepInTargetsArguments.fromMap(Map<String, Object?> obj) |
| : frameId = obj['frameId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['frameId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'frameId': frameId, |
| }; |
| } |
| |
| /// Response to `stepInTargets` request. |
| class StepInTargetsResponse extends Response { |
| static StepInTargetsResponse fromJson(Map<String, Object?> obj) => |
| StepInTargetsResponse.fromMap(obj); |
| |
| StepInTargetsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StepInTargetsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `stepOut` request. |
| class StepOutArguments extends RequestArguments { |
| /// Stepping granularity. If no granularity is specified, a granularity of |
| /// `statement` is assumed. |
| final SteppingGranularity? granularity; |
| |
| /// If this flag is true, all other suspended threads are not resumed. |
| final bool? singleThread; |
| |
| /// Specifies the thread for which to resume execution for one step-out (of |
| /// the given granularity). |
| final int threadId; |
| |
| static StepOutArguments fromJson(Map<String, Object?> obj) => |
| StepOutArguments.fromMap(obj); |
| |
| StepOutArguments({ |
| this.granularity, |
| this.singleThread, |
| required this.threadId, |
| }); |
| |
| StepOutArguments.fromMap(Map<String, Object?> obj) |
| : granularity = obj['granularity'] as SteppingGranularity?, |
| singleThread = obj['singleThread'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['granularity'] is! SteppingGranularity?) { |
| return false; |
| } |
| if (obj['singleThread'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (granularity != null) 'granularity': granularity, |
| if (singleThread != null) 'singleThread': singleThread, |
| 'threadId': threadId, |
| }; |
| } |
| |
| /// Response to `stepOut` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class StepOutResponse extends Response { |
| static StepOutResponse fromJson(Map<String, Object?> obj) => |
| StepOutResponse.fromMap(obj); |
| |
| StepOutResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| StepOutResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// The granularity of one 'step' in the stepping requests `next`, `stepIn`, |
| /// `stepOut`, and `stepBack`. |
| typedef SteppingGranularity = String; |
| |
| /// Arguments for `terminate` request. |
| class TerminateArguments extends RequestArguments { |
| /// A value of true indicates that this `terminate` request is part of a |
| /// restart sequence. |
| final bool? restart; |
| |
| static TerminateArguments fromJson(Map<String, Object?> obj) => |
| TerminateArguments.fromMap(obj); |
| |
| TerminateArguments({ |
| this.restart, |
| }); |
| |
| TerminateArguments.fromMap(Map<String, Object?> obj) |
| : restart = obj['restart'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['restart'] is! bool?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (restart != null) 'restart': restart, |
| }; |
| } |
| |
| /// Response to `terminate` request. This is just an acknowledgement, so no body |
| /// field is required. |
| class TerminateResponse extends Response { |
| static TerminateResponse fromJson(Map<String, Object?> obj) => |
| TerminateResponse.fromMap(obj); |
| |
| TerminateResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| TerminateResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `terminateThreads` request. |
| class TerminateThreadsArguments extends RequestArguments { |
| /// Ids of threads to be terminated. |
| final List<int>? threadIds; |
| |
| static TerminateThreadsArguments fromJson(Map<String, Object?> obj) => |
| TerminateThreadsArguments.fromMap(obj); |
| |
| TerminateThreadsArguments({ |
| this.threadIds, |
| }); |
| |
| TerminateThreadsArguments.fromMap(Map<String, Object?> obj) |
| : threadIds = |
| (obj['threadIds'] as List?)?.map((item) => item as int).toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['threadIds'] is! List || |
| (obj['threadIds'].any((item) => item is! int)))) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (threadIds != null) 'threadIds': threadIds, |
| }; |
| } |
| |
| /// Response to `terminateThreads` request. This is just an acknowledgement, no |
| /// body field is required. |
| class TerminateThreadsResponse extends Response { |
| static TerminateThreadsResponse fromJson(Map<String, Object?> obj) => |
| TerminateThreadsResponse.fromMap(obj); |
| |
| TerminateThreadsResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| TerminateThreadsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// A Thread |
| class Thread { |
| /// Unique identifier for the thread. |
| final int id; |
| |
| /// The name of the thread. |
| final String name; |
| |
| static Thread fromJson(Map<String, Object?> obj) => Thread.fromMap(obj); |
| |
| Thread({ |
| required this.id, |
| required this.name, |
| }); |
| |
| Thread.fromMap(Map<String, Object?> obj) |
| : id = obj['id'] as int, |
| name = obj['name'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['id'] is! int) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'id': id, |
| 'name': name, |
| }; |
| } |
| |
| /// Response to `threads` request. |
| class ThreadsResponse extends Response { |
| static ThreadsResponse fromJson(Map<String, Object?> obj) => |
| ThreadsResponse.fromMap(obj); |
| |
| ThreadsResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| ThreadsResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Provides formatting information for a value. |
| class ValueFormat { |
| /// Display the value in hex. |
| final bool? hex; |
| |
| static ValueFormat fromJson(Map<String, Object?> obj) => |
| ValueFormat.fromMap(obj); |
| |
| ValueFormat({ |
| this.hex, |
| }); |
| |
| ValueFormat.fromMap(Map<String, Object?> obj) : hex = obj['hex'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['hex'] is! bool?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (hex != null) 'hex': hex, |
| }; |
| } |
| |
| /// A Variable is a name/value pair. |
| /// The `type` attribute is shown if space permits or when hovering over the |
| /// variable's name. |
| /// The `kind` attribute is used to render additional properties of the |
| /// variable, e.g. different icons can be used to indicate that a variable is |
| /// public or private. |
| /// If the value is structured (has children), a handle is provided to retrieve |
| /// the children with the `variables` request. |
| /// If the number of named or indexed children is large, the numbers should be |
| /// returned via the `namedVariables` and `indexedVariables` attributes. |
| /// The client can use this information to present the children in a paged UI |
| /// and fetch them in chunks. |
| class Variable { |
| /// The evaluatable name of this variable which can be passed to the |
| /// `evaluate` request to fetch the variable's value. |
| final String? evaluateName; |
| |
| /// The number of indexed child variables. |
| /// The client can use this information to present the children in a paged UI |
| /// and fetch them in chunks. |
| final int? indexedVariables; |
| |
| /// The memory reference for the variable if the variable represents |
| /// executable code, such as a function pointer. |
| /// This attribute is only required if the corresponding capability |
| /// `supportsMemoryReferences` is true. |
| final String? memoryReference; |
| |
| /// The variable's name. |
| final String name; |
| |
| /// The number of named child variables. |
| /// The client can use this information to present the children in a paged UI |
| /// and fetch them in chunks. |
| final int? namedVariables; |
| |
| /// Properties of a variable that can be used to determine how to render the |
| /// variable in the UI. |
| final VariablePresentationHint? presentationHint; |
| |
| /// The type of the variable's value. Typically shown in the UI when hovering |
| /// over the value. |
| /// This attribute should only be returned by a debug adapter if the |
| /// corresponding capability `supportsVariableType` is true. |
| final String? type; |
| |
| /// The variable's value. |
| /// This can be a multi-line text, e.g. for a function the body of a function. |
| /// For structured variables (which do not have a simple value), it is |
| /// recommended to provide a one-line representation of the structured object. |
| /// This helps to identify the structured object in the collapsed state when |
| /// its children are not yet visible. |
| /// An empty string can be used if no value should be shown in the UI. |
| final String value; |
| |
| /// If `variablesReference` is > 0, the variable is structured and its |
| /// children can be retrieved by passing `variablesReference` to the |
| /// `variables` request as long as execution remains suspended. See 'Lifetime |
| /// of Object References' in the Overview section for details. |
| final int variablesReference; |
| |
| static Variable fromJson(Map<String, Object?> obj) => Variable.fromMap(obj); |
| |
| Variable({ |
| this.evaluateName, |
| this.indexedVariables, |
| this.memoryReference, |
| required this.name, |
| this.namedVariables, |
| this.presentationHint, |
| this.type, |
| required this.value, |
| required this.variablesReference, |
| }); |
| |
| Variable.fromMap(Map<String, Object?> obj) |
| : evaluateName = obj['evaluateName'] as String?, |
| indexedVariables = obj['indexedVariables'] as int?, |
| memoryReference = obj['memoryReference'] as String?, |
| name = obj['name'] as String, |
| namedVariables = obj['namedVariables'] as int?, |
| presentationHint = obj['presentationHint'] == null |
| ? null |
| : VariablePresentationHint.fromJson( |
| obj['presentationHint'] as Map<String, Object?>), |
| type = obj['type'] as String?, |
| value = obj['value'] as String, |
| variablesReference = obj['variablesReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['evaluateName'] is! String?) { |
| return false; |
| } |
| if (obj['indexedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['namedVariables'] is! int?) { |
| return false; |
| } |
| if (!VariablePresentationHint.canParse(obj['presentationHint'])) { |
| return false; |
| } |
| if (obj['type'] is! String?) { |
| return false; |
| } |
| if (obj['value'] is! String) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (evaluateName != null) 'evaluateName': evaluateName, |
| if (indexedVariables != null) 'indexedVariables': indexedVariables, |
| if (memoryReference != null) 'memoryReference': memoryReference, |
| 'name': name, |
| if (namedVariables != null) 'namedVariables': namedVariables, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| if (type != null) 'type': type, |
| 'value': value, |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Properties of a variable that can be used to determine how to render the |
| /// variable in the UI. |
| class VariablePresentationHint { |
| /// Set of attributes represented as an array of strings. Before introducing |
| /// additional values, try to use the listed values. |
| final List<String>? attributes; |
| |
| /// The kind of variable. Before introducing additional values, try to use the |
| /// listed values. |
| final String? kind; |
| |
| /// If true, clients can present the variable with a UI that supports a |
| /// specific gesture to trigger its evaluation. |
| /// This mechanism can be used for properties that require executing code when |
| /// retrieving their value and where the code execution can be expensive |
| /// and/or produce side-effects. A typical example are properties based on a |
| /// getter function. |
| /// Please note that in addition to the `lazy` flag, the variable's |
| /// `variablesReference` is expected to refer to a variable that will provide |
| /// the value through another `variable` request. |
| final bool? lazy; |
| |
| /// Visibility of variable. Before introducing additional values, try to use |
| /// the listed values. |
| final String? visibility; |
| |
| static VariablePresentationHint fromJson(Map<String, Object?> obj) => |
| VariablePresentationHint.fromMap(obj); |
| |
| VariablePresentationHint({ |
| this.attributes, |
| this.kind, |
| this.lazy, |
| this.visibility, |
| }); |
| |
| VariablePresentationHint.fromMap(Map<String, Object?> obj) |
| : attributes = (obj['attributes'] as List?) |
| ?.map((item) => item as String) |
| .toList(), |
| kind = obj['kind'] as String?, |
| lazy = obj['lazy'] as bool?, |
| visibility = obj['visibility'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['attributes'] is! List || |
| (obj['attributes'].any((item) => item is! String)))) { |
| return false; |
| } |
| if (obj['kind'] is! String?) { |
| return false; |
| } |
| if (obj['lazy'] is! bool?) { |
| return false; |
| } |
| if (obj['visibility'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (attributes != null) 'attributes': attributes, |
| if (kind != null) 'kind': kind, |
| if (lazy != null) 'lazy': lazy, |
| if (visibility != null) 'visibility': visibility, |
| }; |
| } |
| |
| /// Arguments for `variables` request. |
| class VariablesArguments extends RequestArguments { |
| /// The number of variables to return. If count is missing or 0, all variables |
| /// are returned. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsVariablePaging` is true. |
| final int? count; |
| |
| /// Filter to limit the child variables to either named or indexed. If |
| /// omitted, both types are fetched. |
| final String? filter; |
| |
| /// Specifies details on how to format the Variable values. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsValueFormattingOptions` is true. |
| final ValueFormat? format; |
| |
| /// The index of the first variable to return; if omitted children start at 0. |
| /// The attribute is only honored by a debug adapter if the corresponding |
| /// capability `supportsVariablePaging` is true. |
| final int? start; |
| |
| /// The variable for which to retrieve its children. The `variablesReference` |
| /// must have been obtained in the current suspended state. See 'Lifetime of |
| /// Object References' in the Overview section for details. |
| final int variablesReference; |
| |
| static VariablesArguments fromJson(Map<String, Object?> obj) => |
| VariablesArguments.fromMap(obj); |
| |
| VariablesArguments({ |
| this.count, |
| this.filter, |
| this.format, |
| this.start, |
| required this.variablesReference, |
| }); |
| |
| VariablesArguments.fromMap(Map<String, Object?> obj) |
| : count = obj['count'] as int?, |
| filter = obj['filter'] as String?, |
| format = obj['format'] == null |
| ? null |
| : ValueFormat.fromJson(obj['format'] as Map<String, Object?>), |
| start = obj['start'] as int?, |
| variablesReference = obj['variablesReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['count'] is! int?) { |
| return false; |
| } |
| if (obj['filter'] is! String?) { |
| return false; |
| } |
| if (!ValueFormat.canParse(obj['format'])) { |
| return false; |
| } |
| if (obj['start'] is! int?) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (count != null) 'count': count, |
| if (filter != null) 'filter': filter, |
| if (format != null) 'format': format, |
| if (start != null) 'start': start, |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Response to `variables` request. |
| class VariablesResponse extends Response { |
| static VariablesResponse fromJson(Map<String, Object?> obj) => |
| VariablesResponse.fromMap(obj); |
| |
| VariablesResponse({ |
| required super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| VariablesResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Arguments for `writeMemory` request. |
| class WriteMemoryArguments extends RequestArguments { |
| /// Property to control partial writes. If true, the debug adapter should |
| /// attempt to write memory even if the entire memory region is not writable. |
| /// In such a case the debug adapter should stop after hitting the first byte |
| /// of memory that cannot be written and return the number of bytes written in |
| /// the response via the `offset` and `bytesWritten` properties. |
| /// If false or missing, a debug adapter should attempt to verify the region |
| /// is writable before writing, and fail the response if it is not. |
| final bool? allowPartial; |
| |
| /// Bytes to write, encoded using base64. |
| final String data; |
| |
| /// Memory reference to the base location to which data should be written. |
| final String memoryReference; |
| |
| /// Offset (in bytes) to be applied to the reference location before writing |
| /// data. Can be negative. |
| final int? offset; |
| |
| static WriteMemoryArguments fromJson(Map<String, Object?> obj) => |
| WriteMemoryArguments.fromMap(obj); |
| |
| WriteMemoryArguments({ |
| this.allowPartial, |
| required this.data, |
| required this.memoryReference, |
| this.offset, |
| }); |
| |
| WriteMemoryArguments.fromMap(Map<String, Object?> obj) |
| : allowPartial = obj['allowPartial'] as bool?, |
| data = obj['data'] as String, |
| memoryReference = obj['memoryReference'] as String, |
| offset = obj['offset'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['allowPartial'] is! bool?) { |
| return false; |
| } |
| if (obj['data'] is! String) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| return RequestArguments.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (allowPartial != null) 'allowPartial': allowPartial, |
| 'data': data, |
| 'memoryReference': memoryReference, |
| if (offset != null) 'offset': offset, |
| }; |
| } |
| |
| /// Response to `writeMemory` request. |
| class WriteMemoryResponse extends Response { |
| static WriteMemoryResponse fromJson(Map<String, Object?> obj) => |
| WriteMemoryResponse.fromMap(obj); |
| |
| WriteMemoryResponse({ |
| super.body, |
| required super.command, |
| super.message, |
| required super.requestSeq, |
| required super.seq, |
| required super.success, |
| }); |
| |
| WriteMemoryResponse.fromMap(super.obj) : super.fromMap(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['body'] is! Map<String, Object?>?) { |
| return false; |
| } |
| return Response.canParse(obj); |
| } |
| |
| @override |
| Map<String, Object?> toJson() => { |
| ...super.toJson(), |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class AttachResponseBody { |
| static AttachResponseBody fromJson(Map<String, Object?> obj) => |
| AttachResponseBody.fromMap(obj); |
| |
| AttachResponseBody(); |
| |
| AttachResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class BreakpointEventBody extends EventBody { |
| /// The `id` attribute is used to find the target breakpoint, the other |
| /// attributes are used as the new values. |
| final Breakpoint breakpoint; |
| |
| /// The reason for the event. |
| final String reason; |
| |
| static BreakpointEventBody fromJson(Map<String, Object?> obj) => |
| BreakpointEventBody.fromMap(obj); |
| |
| BreakpointEventBody({ |
| required this.breakpoint, |
| required this.reason, |
| }); |
| |
| BreakpointEventBody.fromMap(Map<String, Object?> obj) |
| : breakpoint = |
| Breakpoint.fromJson(obj['breakpoint'] as Map<String, Object?>), |
| reason = obj['reason'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Breakpoint.canParse(obj['breakpoint'])) { |
| return false; |
| } |
| if (obj['reason'] is! String) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoint': breakpoint, |
| 'reason': reason, |
| }; |
| } |
| |
| class BreakpointLocationsResponseBody { |
| /// Sorted set of possible breakpoint locations. |
| final List<BreakpointLocation> breakpoints; |
| |
| static BreakpointLocationsResponseBody fromJson(Map<String, Object?> obj) => |
| BreakpointLocationsResponseBody.fromMap(obj); |
| |
| BreakpointLocationsResponseBody({ |
| required this.breakpoints, |
| }); |
| |
| BreakpointLocationsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => |
| BreakpointLocation.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'] |
| .any((item) => !BreakpointLocation.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class CancelResponseBody { |
| static CancelResponseBody fromJson(Map<String, Object?> obj) => |
| CancelResponseBody.fromMap(obj); |
| |
| CancelResponseBody(); |
| |
| CancelResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class CapabilitiesEventBody extends EventBody { |
| /// The set of updated capabilities. |
| final Capabilities capabilities; |
| |
| static CapabilitiesEventBody fromJson(Map<String, Object?> obj) => |
| CapabilitiesEventBody.fromMap(obj); |
| |
| CapabilitiesEventBody({ |
| required this.capabilities, |
| }); |
| |
| CapabilitiesEventBody.fromMap(Map<String, Object?> obj) |
| : capabilities = |
| Capabilities.fromJson(obj['capabilities'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Capabilities.canParse(obj['capabilities'])) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'capabilities': capabilities, |
| }; |
| } |
| |
| class CompletionsResponseBody { |
| /// The possible completions for . |
| final List<CompletionItem> targets; |
| |
| static CompletionsResponseBody fromJson(Map<String, Object?> obj) => |
| CompletionsResponseBody.fromMap(obj); |
| |
| CompletionsResponseBody({ |
| required this.targets, |
| }); |
| |
| CompletionsResponseBody.fromMap(Map<String, Object?> obj) |
| : targets = (obj['targets'] as List) |
| .map( |
| (item) => CompletionItem.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['targets'] is! List || |
| (obj['targets'].any((item) => !CompletionItem.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'targets': targets, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class ConfigurationDoneResponseBody { |
| static ConfigurationDoneResponseBody fromJson(Map<String, Object?> obj) => |
| ConfigurationDoneResponseBody.fromMap(obj); |
| |
| ConfigurationDoneResponseBody(); |
| |
| ConfigurationDoneResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class ContinueResponseBody { |
| /// The value true (or a missing property) signals to the client that all |
| /// threads have been resumed. The value false indicates that not all threads |
| /// were resumed. |
| final bool? allThreadsContinued; |
| |
| static ContinueResponseBody fromJson(Map<String, Object?> obj) => |
| ContinueResponseBody.fromMap(obj); |
| |
| ContinueResponseBody({ |
| this.allThreadsContinued, |
| }); |
| |
| ContinueResponseBody.fromMap(Map<String, Object?> obj) |
| : allThreadsContinued = obj['allThreadsContinued'] as bool?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['allThreadsContinued'] is! bool?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (allThreadsContinued != null) |
| 'allThreadsContinued': allThreadsContinued, |
| }; |
| } |
| |
| class ContinuedEventBody extends EventBody { |
| /// If `allThreadsContinued` is true, a debug adapter can announce that all |
| /// threads have continued. |
| final bool? allThreadsContinued; |
| |
| /// The thread which was continued. |
| final int threadId; |
| |
| static ContinuedEventBody fromJson(Map<String, Object?> obj) => |
| ContinuedEventBody.fromMap(obj); |
| |
| ContinuedEventBody({ |
| this.allThreadsContinued, |
| required this.threadId, |
| }); |
| |
| ContinuedEventBody.fromMap(Map<String, Object?> obj) |
| : allThreadsContinued = obj['allThreadsContinued'] as bool?, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['allThreadsContinued'] is! bool?) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (allThreadsContinued != null) |
| 'allThreadsContinued': allThreadsContinued, |
| 'threadId': threadId, |
| }; |
| } |
| |
| class DataBreakpointInfoResponseBody { |
| /// Attribute lists the available access types for a potential data |
| /// breakpoint. A UI client could surface this information. |
| final List<DataBreakpointAccessType>? accessTypes; |
| |
| /// Attribute indicates that a potential data breakpoint could be persisted |
| /// across sessions. |
| final bool? canPersist; |
| |
| /// An identifier for the data on which a data breakpoint can be registered |
| /// with the `setDataBreakpoints` request or null if no data breakpoint is |
| /// available. |
| final Either2<String, Null> dataId; |
| |
| /// UI string that describes on what data the breakpoint is set on or why a |
| /// data breakpoint is not available. |
| final String description; |
| |
| static DataBreakpointInfoResponseBody fromJson(Map<String, Object?> obj) => |
| DataBreakpointInfoResponseBody.fromMap(obj); |
| |
| DataBreakpointInfoResponseBody({ |
| this.accessTypes, |
| this.canPersist, |
| required this.dataId, |
| required this.description, |
| }); |
| |
| DataBreakpointInfoResponseBody.fromMap(Map<String, Object?> obj) |
| : accessTypes = (obj['accessTypes'] as List?) |
| ?.map((item) => item as DataBreakpointAccessType) |
| .toList(), |
| canPersist = obj['canPersist'] as bool?, |
| dataId = obj['dataId'] is String |
| ? Either2<String, Null>.t1(obj['dataId'] as String) |
| : Either2<String, Null>.t2(obj['dataId'] as Null), |
| description = obj['description'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['accessTypes'] is! List || |
| (obj['accessTypes'] |
| .any((item) => item is! DataBreakpointAccessType)))) { |
| return false; |
| } |
| if (obj['canPersist'] is! bool?) { |
| return false; |
| } |
| if ((obj['dataId'] is! String && obj['dataId'] != null)) { |
| return false; |
| } |
| if (obj['description'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (accessTypes != null) 'accessTypes': accessTypes, |
| if (canPersist != null) 'canPersist': canPersist, |
| 'dataId': dataId, |
| 'description': description, |
| }; |
| } |
| |
| class DisassembleResponseBody { |
| /// The list of disassembled instructions. |
| final List<DisassembledInstruction> instructions; |
| |
| static DisassembleResponseBody fromJson(Map<String, Object?> obj) => |
| DisassembleResponseBody.fromMap(obj); |
| |
| DisassembleResponseBody({ |
| required this.instructions, |
| }); |
| |
| DisassembleResponseBody.fromMap(Map<String, Object?> obj) |
| : instructions = (obj['instructions'] as List) |
| .map((item) => |
| DisassembledInstruction.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['instructions'] is! List || |
| (obj['instructions'] |
| .any((item) => !DisassembledInstruction.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'instructions': instructions, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class DisconnectResponseBody { |
| static DisconnectResponseBody fromJson(Map<String, Object?> obj) => |
| DisconnectResponseBody.fromMap(obj); |
| |
| DisconnectResponseBody(); |
| |
| DisconnectResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class ErrorResponseBody { |
| /// A structured error message. |
| final Message? error; |
| |
| static ErrorResponseBody fromJson(Map<String, Object?> obj) => |
| ErrorResponseBody.fromMap(obj); |
| |
| ErrorResponseBody({ |
| this.error, |
| }); |
| |
| ErrorResponseBody.fromMap(Map<String, Object?> obj) |
| : error = obj['error'] == null |
| ? null |
| : Message.fromJson(obj['error'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Message.canParse(obj['error'])) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (error != null) 'error': error, |
| }; |
| } |
| |
| class EvaluateResponseBody { |
| /// The number of indexed child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? indexedVariables; |
| |
| /// A memory reference to a location appropriate for this result. |
| /// For pointer type eval results, this is generally a reference to the memory |
| /// address contained in the pointer. |
| /// This attribute should be returned by a debug adapter if corresponding |
| /// capability `supportsMemoryReferences` is true. |
| final String? memoryReference; |
| |
| /// The number of named child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? namedVariables; |
| |
| /// Properties of an evaluate result that can be used to determine how to |
| /// render the result in the UI. |
| final VariablePresentationHint? presentationHint; |
| |
| /// The result of the evaluate request. |
| final String result; |
| |
| /// The type of the evaluate result. |
| /// This attribute should only be returned by a debug adapter if the |
| /// corresponding capability `supportsVariableType` is true. |
| final String? type; |
| |
| /// If `variablesReference` is > 0, the evaluate result is structured and its |
| /// children can be retrieved by passing `variablesReference` to the |
| /// `variables` request as long as execution remains suspended. See 'Lifetime |
| /// of Object References' in the Overview section for details. |
| final int variablesReference; |
| |
| static EvaluateResponseBody fromJson(Map<String, Object?> obj) => |
| EvaluateResponseBody.fromMap(obj); |
| |
| EvaluateResponseBody({ |
| this.indexedVariables, |
| this.memoryReference, |
| this.namedVariables, |
| this.presentationHint, |
| required this.result, |
| this.type, |
| required this.variablesReference, |
| }); |
| |
| EvaluateResponseBody.fromMap(Map<String, Object?> obj) |
| : indexedVariables = obj['indexedVariables'] as int?, |
| memoryReference = obj['memoryReference'] as String?, |
| namedVariables = obj['namedVariables'] as int?, |
| presentationHint = obj['presentationHint'] == null |
| ? null |
| : VariablePresentationHint.fromJson( |
| obj['presentationHint'] as Map<String, Object?>), |
| result = obj['result'] as String, |
| type = obj['type'] as String?, |
| variablesReference = obj['variablesReference'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['indexedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String?) { |
| return false; |
| } |
| if (obj['namedVariables'] is! int?) { |
| return false; |
| } |
| if (!VariablePresentationHint.canParse(obj['presentationHint'])) { |
| return false; |
| } |
| if (obj['result'] is! String) { |
| return false; |
| } |
| if (obj['type'] is! String?) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (indexedVariables != null) 'indexedVariables': indexedVariables, |
| if (memoryReference != null) 'memoryReference': memoryReference, |
| if (namedVariables != null) 'namedVariables': namedVariables, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| 'result': result, |
| if (type != null) 'type': type, |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| class ExceptionInfoResponseBody { |
| /// Mode that caused the exception notification to be raised. |
| final ExceptionBreakMode breakMode; |
| |
| /// Descriptive text for the exception. |
| final String? description; |
| |
| /// Detailed information about the exception. |
| final ExceptionDetails? details; |
| |
| /// ID of the exception that was thrown. |
| final String exceptionId; |
| |
| static ExceptionInfoResponseBody fromJson(Map<String, Object?> obj) => |
| ExceptionInfoResponseBody.fromMap(obj); |
| |
| ExceptionInfoResponseBody({ |
| required this.breakMode, |
| this.description, |
| this.details, |
| required this.exceptionId, |
| }); |
| |
| ExceptionInfoResponseBody.fromMap(Map<String, Object?> obj) |
| : breakMode = obj['breakMode'] as ExceptionBreakMode, |
| description = obj['description'] as String?, |
| details = obj['details'] == null |
| ? null |
| : ExceptionDetails.fromJson(obj['details'] as Map<String, Object?>), |
| exceptionId = obj['exceptionId'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['breakMode'] is! ExceptionBreakMode) { |
| return false; |
| } |
| if (obj['description'] is! String?) { |
| return false; |
| } |
| if (!ExceptionDetails.canParse(obj['details'])) { |
| return false; |
| } |
| if (obj['exceptionId'] is! String) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakMode': breakMode, |
| if (description != null) 'description': description, |
| if (details != null) 'details': details, |
| 'exceptionId': exceptionId, |
| }; |
| } |
| |
| class ExitedEventBody extends EventBody { |
| /// The exit code returned from the debuggee. |
| final int exitCode; |
| |
| static ExitedEventBody fromJson(Map<String, Object?> obj) => |
| ExitedEventBody.fromMap(obj); |
| |
| ExitedEventBody({ |
| required this.exitCode, |
| }); |
| |
| ExitedEventBody.fromMap(Map<String, Object?> obj) |
| : exitCode = obj['exitCode'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['exitCode'] is! int) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'exitCode': exitCode, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class GotoResponseBody { |
| static GotoResponseBody fromJson(Map<String, Object?> obj) => |
| GotoResponseBody.fromMap(obj); |
| |
| GotoResponseBody(); |
| |
| GotoResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class GotoTargetsResponseBody { |
| /// The possible goto targets of the specified location. |
| final List<GotoTarget> targets; |
| |
| static GotoTargetsResponseBody fromJson(Map<String, Object?> obj) => |
| GotoTargetsResponseBody.fromMap(obj); |
| |
| GotoTargetsResponseBody({ |
| required this.targets, |
| }); |
| |
| GotoTargetsResponseBody.fromMap(Map<String, Object?> obj) |
| : targets = (obj['targets'] as List) |
| .map((item) => GotoTarget.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['targets'] is! List || |
| (obj['targets'].any((item) => !GotoTarget.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'targets': targets, |
| }; |
| } |
| |
| /// The capabilities of this debug adapter. |
| class InitializeResponseBody { |
| static InitializeResponseBody fromJson(Map<String, Object?> obj) => |
| InitializeResponseBody.fromMap(obj); |
| |
| InitializeResponseBody(); |
| |
| InitializeResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Event-specific information. |
| class InitializedEventBody extends EventBody { |
| static InitializedEventBody fromJson(Map<String, Object?> obj) => |
| InitializedEventBody.fromMap(obj); |
| |
| InitializedEventBody(); |
| |
| InitializedEventBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class InvalidatedEventBody extends EventBody { |
| /// Set of logical areas that got invalidated. This property has a hint |
| /// characteristic: a client can only be expected to make a 'best effort' in |
| /// honoring the areas but there are no guarantees. If this property is |
| /// missing, empty, or if values are not understood, the client should assume |
| /// a single value `all`. |
| final List<InvalidatedAreas>? areas; |
| |
| /// If specified, the client only needs to refetch data related to this stack |
| /// frame (and the `threadId` is ignored). |
| final int? stackFrameId; |
| |
| /// If specified, the client only needs to refetch data related to this |
| /// thread. |
| final int? threadId; |
| |
| static InvalidatedEventBody fromJson(Map<String, Object?> obj) => |
| InvalidatedEventBody.fromMap(obj); |
| |
| InvalidatedEventBody({ |
| this.areas, |
| this.stackFrameId, |
| this.threadId, |
| }); |
| |
| InvalidatedEventBody.fromMap(Map<String, Object?> obj) |
| : areas = (obj['areas'] as List?) |
| ?.map((item) => item as InvalidatedAreas) |
| .toList(), |
| stackFrameId = obj['stackFrameId'] as int?, |
| threadId = obj['threadId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['areas'] is! List || |
| (obj['areas'].any((item) => item is! InvalidatedAreas)))) { |
| return false; |
| } |
| if (obj['stackFrameId'] is! int?) { |
| return false; |
| } |
| if (obj['threadId'] is! int?) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (areas != null) 'areas': areas, |
| if (stackFrameId != null) 'stackFrameId': stackFrameId, |
| if (threadId != null) 'threadId': threadId, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class LaunchResponseBody { |
| static LaunchResponseBody fromJson(Map<String, Object?> obj) => |
| LaunchResponseBody.fromMap(obj); |
| |
| LaunchResponseBody(); |
| |
| LaunchResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class LoadedSourceEventBody extends EventBody { |
| /// The reason for the event. |
| final String reason; |
| |
| /// The new, changed, or removed source. |
| final Source source; |
| |
| static LoadedSourceEventBody fromJson(Map<String, Object?> obj) => |
| LoadedSourceEventBody.fromMap(obj); |
| |
| LoadedSourceEventBody({ |
| required this.reason, |
| required this.source, |
| }); |
| |
| LoadedSourceEventBody.fromMap(Map<String, Object?> obj) |
| : reason = obj['reason'] as String, |
| source = Source.fromJson(obj['source'] as Map<String, Object?>); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['reason'] is! String) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'reason': reason, |
| 'source': source, |
| }; |
| } |
| |
| class LoadedSourcesResponseBody { |
| /// Set of loaded sources. |
| final List<Source> sources; |
| |
| static LoadedSourcesResponseBody fromJson(Map<String, Object?> obj) => |
| LoadedSourcesResponseBody.fromMap(obj); |
| |
| LoadedSourcesResponseBody({ |
| required this.sources, |
| }); |
| |
| LoadedSourcesResponseBody.fromMap(Map<String, Object?> obj) |
| : sources = (obj['sources'] as List) |
| .map((item) => Source.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['sources'] is! List || |
| (obj['sources'].any((item) => !Source.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'sources': sources, |
| }; |
| } |
| |
| class MemoryEventBody extends EventBody { |
| /// Number of bytes updated. |
| final int count; |
| |
| /// Memory reference of a memory range that has been updated. |
| final String memoryReference; |
| |
| /// Starting offset in bytes where memory has been updated. Can be negative. |
| final int offset; |
| |
| static MemoryEventBody fromJson(Map<String, Object?> obj) => |
| MemoryEventBody.fromMap(obj); |
| |
| MemoryEventBody({ |
| required this.count, |
| required this.memoryReference, |
| required this.offset, |
| }); |
| |
| MemoryEventBody.fromMap(Map<String, Object?> obj) |
| : count = obj['count'] as int, |
| memoryReference = obj['memoryReference'] as String, |
| offset = obj['offset'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['count'] is! int) { |
| return false; |
| } |
| if (obj['memoryReference'] is! String) { |
| return false; |
| } |
| if (obj['offset'] is! int) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'count': count, |
| 'memoryReference': memoryReference, |
| 'offset': offset, |
| }; |
| } |
| |
| class ModuleEventBody extends EventBody { |
| /// The new, changed, or removed module. In case of `removed` only the module |
| /// id is used. |
| final Module module; |
| |
| /// The reason for the event. |
| final String reason; |
| |
| static ModuleEventBody fromJson(Map<String, Object?> obj) => |
| ModuleEventBody.fromMap(obj); |
| |
| ModuleEventBody({ |
| required this.module, |
| required this.reason, |
| }); |
| |
| ModuleEventBody.fromMap(Map<String, Object?> obj) |
| : module = Module.fromJson(obj['module'] as Map<String, Object?>), |
| reason = obj['reason'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (!Module.canParse(obj['module'])) { |
| return false; |
| } |
| if (obj['reason'] is! String) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'module': module, |
| 'reason': reason, |
| }; |
| } |
| |
| class ModulesResponseBody { |
| /// All modules or range of modules. |
| final List<Module> modules; |
| |
| /// The total number of modules available. |
| final int? totalModules; |
| |
| static ModulesResponseBody fromJson(Map<String, Object?> obj) => |
| ModulesResponseBody.fromMap(obj); |
| |
| ModulesResponseBody({ |
| required this.modules, |
| this.totalModules, |
| }); |
| |
| ModulesResponseBody.fromMap(Map<String, Object?> obj) |
| : modules = (obj['modules'] as List) |
| .map((item) => Module.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| totalModules = obj['totalModules'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['modules'] is! List || |
| (obj['modules'].any((item) => !Module.canParse(item))))) { |
| return false; |
| } |
| if (obj['totalModules'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'modules': modules, |
| if (totalModules != null) 'totalModules': totalModules, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class NextResponseBody { |
| static NextResponseBody fromJson(Map<String, Object?> obj) => |
| NextResponseBody.fromMap(obj); |
| |
| NextResponseBody(); |
| |
| NextResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class OutputEventBody extends EventBody { |
| /// The output category. If not specified or if the category is not understood |
| /// by the client, `console` is assumed. |
| final String? category; |
| |
| /// The position in `line` where the output was produced. It is measured in |
| /// UTF-16 code units and the client capability `columnsStartAt1` determines |
| /// whether it is 0- or 1-based. |
| final int? column; |
| |
| /// Additional data to report. For the `telemetry` category the data is sent |
| /// to telemetry, for the other categories the data is shown in JSON format. |
| final Object? data; |
| |
| /// Support for keeping an output log organized by grouping related messages. |
| final String? group; |
| |
| /// The source location's line where the output was produced. |
| final int? line; |
| |
| /// The output to report. |
| final String output; |
| |
| /// The source location where the output was produced. |
| final Source? source; |
| |
| /// If an attribute `variablesReference` exists and its value is > 0, the |
| /// output contains objects which can be retrieved by passing |
| /// `variablesReference` to the `variables` request as long as execution |
| /// remains suspended. See 'Lifetime of Object References' in the Overview |
| /// section for details. |
| final int? variablesReference; |
| |
| static OutputEventBody fromJson(Map<String, Object?> obj) => |
| OutputEventBody.fromMap(obj); |
| |
| OutputEventBody({ |
| this.category, |
| this.column, |
| this.data, |
| this.group, |
| this.line, |
| required this.output, |
| this.source, |
| this.variablesReference, |
| }); |
| |
| OutputEventBody.fromMap(Map<String, Object?> obj) |
| : category = obj['category'] as String?, |
| column = obj['column'] as int?, |
| data = obj['data'], |
| group = obj['group'] as String?, |
| line = obj['line'] as int?, |
| output = obj['output'] as String, |
| source = obj['source'] == null |
| ? null |
| : Source.fromJson(obj['source'] as Map<String, Object?>), |
| variablesReference = obj['variablesReference'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['category'] is! String?) { |
| return false; |
| } |
| if (obj['column'] is! int?) { |
| return false; |
| } |
| if (obj['group'] is! String?) { |
| return false; |
| } |
| if (obj['line'] is! int?) { |
| return false; |
| } |
| if (obj['output'] is! String) { |
| return false; |
| } |
| if (!Source.canParse(obj['source'])) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int?) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (category != null) 'category': category, |
| if (column != null) 'column': column, |
| if (data != null) 'data': data, |
| if (group != null) 'group': group, |
| if (line != null) 'line': line, |
| 'output': output, |
| if (source != null) 'source': source, |
| if (variablesReference != null) |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class PauseResponseBody { |
| static PauseResponseBody fromJson(Map<String, Object?> obj) => |
| PauseResponseBody.fromMap(obj); |
| |
| PauseResponseBody(); |
| |
| PauseResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class ProcessEventBody extends EventBody { |
| /// If true, the process is running on the same computer as the debug adapter. |
| final bool? isLocalProcess; |
| |
| /// The logical name of the process. This is usually the full path to |
| /// process's executable file. Example: /home/example/myproj/program.js. |
| final String name; |
| |
| /// The size of a pointer or address for this process, in bits. This value may |
| /// be used by clients when formatting addresses for display. |
| final int? pointerSize; |
| |
| /// Describes how the debug engine started debugging this process. |
| final String? startMethod; |
| |
| /// The system process id of the debugged process. This property is missing |
| /// for non-system processes. |
| final int? systemProcessId; |
| |
| static ProcessEventBody fromJson(Map<String, Object?> obj) => |
| ProcessEventBody.fromMap(obj); |
| |
| ProcessEventBody({ |
| this.isLocalProcess, |
| required this.name, |
| this.pointerSize, |
| this.startMethod, |
| this.systemProcessId, |
| }); |
| |
| ProcessEventBody.fromMap(Map<String, Object?> obj) |
| : isLocalProcess = obj['isLocalProcess'] as bool?, |
| name = obj['name'] as String, |
| pointerSize = obj['pointerSize'] as int?, |
| startMethod = obj['startMethod'] as String?, |
| systemProcessId = obj['systemProcessId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['isLocalProcess'] is! bool?) { |
| return false; |
| } |
| if (obj['name'] is! String) { |
| return false; |
| } |
| if (obj['pointerSize'] is! int?) { |
| return false; |
| } |
| if (obj['startMethod'] is! String?) { |
| return false; |
| } |
| if (obj['systemProcessId'] is! int?) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (isLocalProcess != null) 'isLocalProcess': isLocalProcess, |
| 'name': name, |
| if (pointerSize != null) 'pointerSize': pointerSize, |
| if (startMethod != null) 'startMethod': startMethod, |
| if (systemProcessId != null) 'systemProcessId': systemProcessId, |
| }; |
| } |
| |
| class ProgressEndEventBody extends EventBody { |
| /// More detailed progress message. If omitted, the previous message (if any) |
| /// is used. |
| final String? message; |
| |
| /// The ID that was introduced in the initial `ProgressStartEvent`. |
| final String progressId; |
| |
| static ProgressEndEventBody fromJson(Map<String, Object?> obj) => |
| ProgressEndEventBody.fromMap(obj); |
| |
| ProgressEndEventBody({ |
| this.message, |
| required this.progressId, |
| }); |
| |
| ProgressEndEventBody.fromMap(Map<String, Object?> obj) |
| : message = obj['message'] as String?, |
| progressId = obj['progressId'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['progressId'] is! String) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (message != null) 'message': message, |
| 'progressId': progressId, |
| }; |
| } |
| |
| class ProgressStartEventBody extends EventBody { |
| /// If true, the request that reports progress may be cancelled with a |
| /// `cancel` request. |
| /// So this property basically controls whether the client should use UX that |
| /// supports cancellation. |
| /// Clients that don't support cancellation are allowed to ignore the setting. |
| final bool? cancellable; |
| |
| /// More detailed progress message. |
| final String? message; |
| |
| /// Progress percentage to display (value range: 0 to 100). If omitted no |
| /// percentage is shown. |
| final num? percentage; |
| |
| /// An ID that can be used in subsequent `progressUpdate` and `progressEnd` |
| /// events to make them refer to the same progress reporting. |
| /// IDs must be unique within a debug session. |
| final String progressId; |
| |
| /// The request ID that this progress report is related to. If specified a |
| /// debug adapter is expected to emit progress events for the long running |
| /// request until the request has been either completed or cancelled. |
| /// If the request ID is omitted, the progress report is assumed to be related |
| /// to some general activity of the debug adapter. |
| final int? requestId; |
| |
| /// Short title of the progress reporting. Shown in the UI to describe the |
| /// long running operation. |
| final String title; |
| |
| static ProgressStartEventBody fromJson(Map<String, Object?> obj) => |
| ProgressStartEventBody.fromMap(obj); |
| |
| ProgressStartEventBody({ |
| this.cancellable, |
| this.message, |
| this.percentage, |
| required this.progressId, |
| this.requestId, |
| required this.title, |
| }); |
| |
| ProgressStartEventBody.fromMap(Map<String, Object?> obj) |
| : cancellable = obj['cancellable'] as bool?, |
| message = obj['message'] as String?, |
| percentage = obj['percentage'] as num?, |
| progressId = obj['progressId'] as String, |
| requestId = obj['requestId'] as int?, |
| title = obj['title'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['cancellable'] is! bool?) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['percentage'] is! num?) { |
| return false; |
| } |
| if (obj['progressId'] is! String) { |
| return false; |
| } |
| if (obj['requestId'] is! int?) { |
| return false; |
| } |
| if (obj['title'] is! String) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (cancellable != null) 'cancellable': cancellable, |
| if (message != null) 'message': message, |
| if (percentage != null) 'percentage': percentage, |
| 'progressId': progressId, |
| if (requestId != null) 'requestId': requestId, |
| 'title': title, |
| }; |
| } |
| |
| class ProgressUpdateEventBody extends EventBody { |
| /// More detailed progress message. If omitted, the previous message (if any) |
| /// is used. |
| final String? message; |
| |
| /// Progress percentage to display (value range: 0 to 100). If omitted no |
| /// percentage is shown. |
| final num? percentage; |
| |
| /// The ID that was introduced in the initial `progressStart` event. |
| final String progressId; |
| |
| static ProgressUpdateEventBody fromJson(Map<String, Object?> obj) => |
| ProgressUpdateEventBody.fromMap(obj); |
| |
| ProgressUpdateEventBody({ |
| this.message, |
| this.percentage, |
| required this.progressId, |
| }); |
| |
| ProgressUpdateEventBody.fromMap(Map<String, Object?> obj) |
| : message = obj['message'] as String?, |
| percentage = obj['percentage'] as num?, |
| progressId = obj['progressId'] as String; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['message'] is! String?) { |
| return false; |
| } |
| if (obj['percentage'] is! num?) { |
| return false; |
| } |
| if (obj['progressId'] is! String) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (message != null) 'message': message, |
| if (percentage != null) 'percentage': percentage, |
| 'progressId': progressId, |
| }; |
| } |
| |
| class ReadMemoryResponseBody { |
| /// The address of the first byte of data returned. |
| /// Treated as a hex value if prefixed with `0x`, or as a decimal value |
| /// otherwise. |
| final String address; |
| |
| /// The bytes read from memory, encoded using base64. If the decoded length of |
| /// `data` is less than the requested `count` in the original `readMemory` |
| /// request, and `unreadableBytes` is zero or omitted, then the client should |
| /// assume it's reached the end of readable memory. |
| final String? data; |
| |
| /// The number of unreadable bytes encountered after the last successfully |
| /// read byte. |
| /// This can be used to determine the number of bytes that should be skipped |
| /// before a subsequent `readMemory` request succeeds. |
| final int? unreadableBytes; |
| |
| static ReadMemoryResponseBody fromJson(Map<String, Object?> obj) => |
| ReadMemoryResponseBody.fromMap(obj); |
| |
| ReadMemoryResponseBody({ |
| required this.address, |
| this.data, |
| this.unreadableBytes, |
| }); |
| |
| ReadMemoryResponseBody.fromMap(Map<String, Object?> obj) |
| : address = obj['address'] as String, |
| data = obj['data'] as String?, |
| unreadableBytes = obj['unreadableBytes'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['address'] is! String) { |
| return false; |
| } |
| if (obj['data'] is! String?) { |
| return false; |
| } |
| if (obj['unreadableBytes'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'address': address, |
| if (data != null) 'data': data, |
| if (unreadableBytes != null) 'unreadableBytes': unreadableBytes, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class RestartFrameResponseBody { |
| static RestartFrameResponseBody fromJson(Map<String, Object?> obj) => |
| RestartFrameResponseBody.fromMap(obj); |
| |
| RestartFrameResponseBody(); |
| |
| RestartFrameResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class RestartResponseBody { |
| static RestartResponseBody fromJson(Map<String, Object?> obj) => |
| RestartResponseBody.fromMap(obj); |
| |
| RestartResponseBody(); |
| |
| RestartResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class ReverseContinueResponseBody { |
| static ReverseContinueResponseBody fromJson(Map<String, Object?> obj) => |
| ReverseContinueResponseBody.fromMap(obj); |
| |
| ReverseContinueResponseBody(); |
| |
| ReverseContinueResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class RunInTerminalResponseBody { |
| /// The process ID. The value should be less than or equal to 2147483647 |
| /// (2^31-1). |
| final int? processId; |
| |
| /// The process ID of the terminal shell. The value should be less than or |
| /// equal to 2147483647 (2^31-1). |
| final int? shellProcessId; |
| |
| static RunInTerminalResponseBody fromJson(Map<String, Object?> obj) => |
| RunInTerminalResponseBody.fromMap(obj); |
| |
| RunInTerminalResponseBody({ |
| this.processId, |
| this.shellProcessId, |
| }); |
| |
| RunInTerminalResponseBody.fromMap(Map<String, Object?> obj) |
| : processId = obj['processId'] as int?, |
| shellProcessId = obj['shellProcessId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['processId'] is! int?) { |
| return false; |
| } |
| if (obj['shellProcessId'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (processId != null) 'processId': processId, |
| if (shellProcessId != null) 'shellProcessId': shellProcessId, |
| }; |
| } |
| |
| class ScopesResponseBody { |
| /// The scopes of the stack frame. If the array has length zero, there are no |
| /// scopes available. |
| final List<Scope> scopes; |
| |
| static ScopesResponseBody fromJson(Map<String, Object?> obj) => |
| ScopesResponseBody.fromMap(obj); |
| |
| ScopesResponseBody({ |
| required this.scopes, |
| }); |
| |
| ScopesResponseBody.fromMap(Map<String, Object?> obj) |
| : scopes = (obj['scopes'] as List) |
| .map((item) => Scope.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['scopes'] is! List || |
| (obj['scopes'].any((item) => !Scope.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'scopes': scopes, |
| }; |
| } |
| |
| class SetBreakpointsResponseBody { |
| /// Information about the breakpoints. |
| /// The array elements are in the same order as the elements of the |
| /// `breakpoints` (or the deprecated `lines`) array in the arguments. |
| final List<Breakpoint> breakpoints; |
| |
| static SetBreakpointsResponseBody fromJson(Map<String, Object?> obj) => |
| SetBreakpointsResponseBody.fromMap(obj); |
| |
| SetBreakpointsResponseBody({ |
| required this.breakpoints, |
| }); |
| |
| SetBreakpointsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => Breakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !Breakpoint.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| class SetDataBreakpointsResponseBody { |
| /// Information about the data breakpoints. The array elements correspond to |
| /// the elements of the input argument `breakpoints` array. |
| final List<Breakpoint> breakpoints; |
| |
| static SetDataBreakpointsResponseBody fromJson(Map<String, Object?> obj) => |
| SetDataBreakpointsResponseBody.fromMap(obj); |
| |
| SetDataBreakpointsResponseBody({ |
| required this.breakpoints, |
| }); |
| |
| SetDataBreakpointsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => Breakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !Breakpoint.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| class SetExceptionBreakpointsResponseBody { |
| /// Information about the exception breakpoints or filters. |
| /// The breakpoints returned are in the same order as the elements of the |
| /// `filters`, `filterOptions`, `exceptionOptions` arrays in the arguments. If |
| /// both `filters` and `filterOptions` are given, the returned array must |
| /// start with `filters` information first, followed by `filterOptions` |
| /// information. |
| final List<Breakpoint>? breakpoints; |
| |
| static SetExceptionBreakpointsResponseBody fromJson( |
| Map<String, Object?> obj) => |
| SetExceptionBreakpointsResponseBody.fromMap(obj); |
| |
| SetExceptionBreakpointsResponseBody({ |
| this.breakpoints, |
| }); |
| |
| SetExceptionBreakpointsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List?) |
| ?.map((item) => Breakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !Breakpoint.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (breakpoints != null) 'breakpoints': breakpoints, |
| }; |
| } |
| |
| class SetExpressionResponseBody { |
| /// The number of indexed child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? indexedVariables; |
| |
| /// The number of named child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? namedVariables; |
| |
| /// Properties of a value that can be used to determine how to render the |
| /// result in the UI. |
| final VariablePresentationHint? presentationHint; |
| |
| /// The type of the value. |
| /// This attribute should only be returned by a debug adapter if the |
| /// corresponding capability `supportsVariableType` is true. |
| final String? type; |
| |
| /// The new value of the expression. |
| final String value; |
| |
| /// If `variablesReference` is > 0, the evaluate result is structured and its |
| /// children can be retrieved by passing `variablesReference` to the |
| /// `variables` request as long as execution remains suspended. See 'Lifetime |
| /// of Object References' in the Overview section for details. |
| final int? variablesReference; |
| |
| static SetExpressionResponseBody fromJson(Map<String, Object?> obj) => |
| SetExpressionResponseBody.fromMap(obj); |
| |
| SetExpressionResponseBody({ |
| this.indexedVariables, |
| this.namedVariables, |
| this.presentationHint, |
| this.type, |
| required this.value, |
| this.variablesReference, |
| }); |
| |
| SetExpressionResponseBody.fromMap(Map<String, Object?> obj) |
| : indexedVariables = obj['indexedVariables'] as int?, |
| namedVariables = obj['namedVariables'] as int?, |
| presentationHint = obj['presentationHint'] == null |
| ? null |
| : VariablePresentationHint.fromJson( |
| obj['presentationHint'] as Map<String, Object?>), |
| type = obj['type'] as String?, |
| value = obj['value'] as String, |
| variablesReference = obj['variablesReference'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['indexedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['namedVariables'] is! int?) { |
| return false; |
| } |
| if (!VariablePresentationHint.canParse(obj['presentationHint'])) { |
| return false; |
| } |
| if (obj['type'] is! String?) { |
| return false; |
| } |
| if (obj['value'] is! String) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (indexedVariables != null) 'indexedVariables': indexedVariables, |
| if (namedVariables != null) 'namedVariables': namedVariables, |
| if (presentationHint != null) 'presentationHint': presentationHint, |
| if (type != null) 'type': type, |
| 'value': value, |
| if (variablesReference != null) |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| class SetFunctionBreakpointsResponseBody { |
| /// Information about the breakpoints. The array elements correspond to the |
| /// elements of the `breakpoints` array. |
| final List<Breakpoint> breakpoints; |
| |
| static SetFunctionBreakpointsResponseBody fromJson( |
| Map<String, Object?> obj) => |
| SetFunctionBreakpointsResponseBody.fromMap(obj); |
| |
| SetFunctionBreakpointsResponseBody({ |
| required this.breakpoints, |
| }); |
| |
| SetFunctionBreakpointsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => Breakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !Breakpoint.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| class SetInstructionBreakpointsResponseBody { |
| /// Information about the breakpoints. The array elements correspond to the |
| /// elements of the `breakpoints` array. |
| final List<Breakpoint> breakpoints; |
| |
| static SetInstructionBreakpointsResponseBody fromJson( |
| Map<String, Object?> obj) => |
| SetInstructionBreakpointsResponseBody.fromMap(obj); |
| |
| SetInstructionBreakpointsResponseBody({ |
| required this.breakpoints, |
| }); |
| |
| SetInstructionBreakpointsResponseBody.fromMap(Map<String, Object?> obj) |
| : breakpoints = (obj['breakpoints'] as List) |
| .map((item) => Breakpoint.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['breakpoints'] is! List || |
| (obj['breakpoints'].any((item) => !Breakpoint.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'breakpoints': breakpoints, |
| }; |
| } |
| |
| class SetVariableResponseBody { |
| /// The number of indexed child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? indexedVariables; |
| |
| /// The number of named child variables. |
| /// The client can use this information to present the variables in a paged UI |
| /// and fetch them in chunks. |
| /// The value should be less than or equal to 2147483647 (2^31-1). |
| final int? namedVariables; |
| |
| /// The type of the new value. Typically shown in the UI when hovering over |
| /// the value. |
| final String? type; |
| |
| /// The new value of the variable. |
| final String value; |
| |
| /// If `variablesReference` is > 0, the new value is structured and its |
| /// children can be retrieved by passing `variablesReference` to the |
| /// `variables` request as long as execution remains suspended. See 'Lifetime |
| /// of Object References' in the Overview section for details. |
| final int? variablesReference; |
| |
| static SetVariableResponseBody fromJson(Map<String, Object?> obj) => |
| SetVariableResponseBody.fromMap(obj); |
| |
| SetVariableResponseBody({ |
| this.indexedVariables, |
| this.namedVariables, |
| this.type, |
| required this.value, |
| this.variablesReference, |
| }); |
| |
| SetVariableResponseBody.fromMap(Map<String, Object?> obj) |
| : indexedVariables = obj['indexedVariables'] as int?, |
| namedVariables = obj['namedVariables'] as int?, |
| type = obj['type'] as String?, |
| value = obj['value'] as String, |
| variablesReference = obj['variablesReference'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['indexedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['namedVariables'] is! int?) { |
| return false; |
| } |
| if (obj['type'] is! String?) { |
| return false; |
| } |
| if (obj['value'] is! String) { |
| return false; |
| } |
| if (obj['variablesReference'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (indexedVariables != null) 'indexedVariables': indexedVariables, |
| if (namedVariables != null) 'namedVariables': namedVariables, |
| if (type != null) 'type': type, |
| 'value': value, |
| if (variablesReference != null) |
| 'variablesReference': variablesReference, |
| }; |
| } |
| |
| class SourceResponseBody { |
| /// Content of the source reference. |
| final String content; |
| |
| /// Content type (MIME type) of the source. |
| final String? mimeType; |
| |
| static SourceResponseBody fromJson(Map<String, Object?> obj) => |
| SourceResponseBody.fromMap(obj); |
| |
| SourceResponseBody({ |
| required this.content, |
| this.mimeType, |
| }); |
| |
| SourceResponseBody.fromMap(Map<String, Object?> obj) |
| : content = obj['content'] as String, |
| mimeType = obj['mimeType'] as String?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['content'] is! String) { |
| return false; |
| } |
| if (obj['mimeType'] is! String?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'content': content, |
| if (mimeType != null) 'mimeType': mimeType, |
| }; |
| } |
| |
| class StackTraceResponseBody { |
| /// The frames of the stack frame. If the array has length zero, there are no |
| /// stack frames available. |
| /// This means that there is no location information available. |
| final List<StackFrame> stackFrames; |
| |
| /// The total number of frames available in the stack. If omitted or if |
| /// `totalFrames` is larger than the available frames, a client is expected to |
| /// request frames until a request returns less frames than requested (which |
| /// indicates the end of the stack). Returning monotonically increasing |
| /// `totalFrames` values for subsequent requests can be used to enforce paging |
| /// in the client. |
| final int? totalFrames; |
| |
| static StackTraceResponseBody fromJson(Map<String, Object?> obj) => |
| StackTraceResponseBody.fromMap(obj); |
| |
| StackTraceResponseBody({ |
| required this.stackFrames, |
| this.totalFrames, |
| }); |
| |
| StackTraceResponseBody.fromMap(Map<String, Object?> obj) |
| : stackFrames = (obj['stackFrames'] as List) |
| .map((item) => StackFrame.fromJson(item as Map<String, Object?>)) |
| .toList(), |
| totalFrames = obj['totalFrames'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['stackFrames'] is! List || |
| (obj['stackFrames'].any((item) => !StackFrame.canParse(item))))) { |
| return false; |
| } |
| if (obj['totalFrames'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'stackFrames': stackFrames, |
| if (totalFrames != null) 'totalFrames': totalFrames, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class StartDebuggingResponseBody { |
| static StartDebuggingResponseBody fromJson(Map<String, Object?> obj) => |
| StartDebuggingResponseBody.fromMap(obj); |
| |
| StartDebuggingResponseBody(); |
| |
| StartDebuggingResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class StepBackResponseBody { |
| static StepBackResponseBody fromJson(Map<String, Object?> obj) => |
| StepBackResponseBody.fromMap(obj); |
| |
| StepBackResponseBody(); |
| |
| StepBackResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class StepInResponseBody { |
| static StepInResponseBody fromJson(Map<String, Object?> obj) => |
| StepInResponseBody.fromMap(obj); |
| |
| StepInResponseBody(); |
| |
| StepInResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class StepInTargetsResponseBody { |
| /// The possible step-in targets of the specified source location. |
| final List<StepInTarget> targets; |
| |
| static StepInTargetsResponseBody fromJson(Map<String, Object?> obj) => |
| StepInTargetsResponseBody.fromMap(obj); |
| |
| StepInTargetsResponseBody({ |
| required this.targets, |
| }); |
| |
| StepInTargetsResponseBody.fromMap(Map<String, Object?> obj) |
| : targets = (obj['targets'] as List) |
| .map((item) => StepInTarget.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['targets'] is! List || |
| (obj['targets'].any((item) => !StepInTarget.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'targets': targets, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class StepOutResponseBody { |
| static StepOutResponseBody fromJson(Map<String, Object?> obj) => |
| StepOutResponseBody.fromMap(obj); |
| |
| StepOutResponseBody(); |
| |
| StepOutResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class StoppedEventBody extends EventBody { |
| /// If `allThreadsStopped` is true, a debug adapter can announce that all |
| /// threads have stopped. |
| /// - The client should use this information to enable that all threads can be expanded to access their stacktraces. |
| /// - If the attribute is missing or false, only the thread with the given `threadId` can be expanded. |
| final bool? allThreadsStopped; |
| |
| /// The full reason for the event, e.g. 'Paused on exception'. This string is |
| /// shown in the UI as is and can be translated. |
| final String? description; |
| |
| /// Ids of the breakpoints that triggered the event. In most cases there is |
| /// only a single breakpoint but here are some examples for multiple |
| /// breakpoints: |
| /// - Different types of breakpoints map to the same location. |
| /// - Multiple source breakpoints get collapsed to the same instruction by the compiler/runtime. |
| /// - Multiple function breakpoints with different function names map to the same location. |
| final List<int>? hitBreakpointIds; |
| |
| /// A value of true hints to the client that this event should not change the |
| /// focus. |
| final bool? preserveFocusHint; |
| |
| /// The reason for the event. |
| /// For backward compatibility this string is shown in the UI if the |
| /// `description` attribute is missing (but it must not be translated). |
| final String reason; |
| |
| /// Additional information. E.g. if reason is `exception`, text contains the |
| /// exception name. This string is shown in the UI. |
| final String? text; |
| |
| /// The thread which was stopped. |
| final int? threadId; |
| |
| static StoppedEventBody fromJson(Map<String, Object?> obj) => |
| StoppedEventBody.fromMap(obj); |
| |
| StoppedEventBody({ |
| this.allThreadsStopped, |
| this.description, |
| this.hitBreakpointIds, |
| this.preserveFocusHint, |
| required this.reason, |
| this.text, |
| this.threadId, |
| }); |
| |
| StoppedEventBody.fromMap(Map<String, Object?> obj) |
| : allThreadsStopped = obj['allThreadsStopped'] as bool?, |
| description = obj['description'] as String?, |
| hitBreakpointIds = (obj['hitBreakpointIds'] as List?) |
| ?.map((item) => item as int) |
| .toList(), |
| preserveFocusHint = obj['preserveFocusHint'] as bool?, |
| reason = obj['reason'] as String, |
| text = obj['text'] as String?, |
| threadId = obj['threadId'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['allThreadsStopped'] is! bool?) { |
| return false; |
| } |
| if (obj['description'] is! String?) { |
| return false; |
| } |
| if ((obj['hitBreakpointIds'] is! List || |
| (obj['hitBreakpointIds'].any((item) => item is! int)))) { |
| return false; |
| } |
| if (obj['preserveFocusHint'] is! bool?) { |
| return false; |
| } |
| if (obj['reason'] is! String) { |
| return false; |
| } |
| if (obj['text'] is! String?) { |
| return false; |
| } |
| if (obj['threadId'] is! int?) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (allThreadsStopped != null) 'allThreadsStopped': allThreadsStopped, |
| if (description != null) 'description': description, |
| if (hitBreakpointIds != null) 'hitBreakpointIds': hitBreakpointIds, |
| if (preserveFocusHint != null) 'preserveFocusHint': preserveFocusHint, |
| 'reason': reason, |
| if (text != null) 'text': text, |
| if (threadId != null) 'threadId': threadId, |
| }; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class TerminateResponseBody { |
| static TerminateResponseBody fromJson(Map<String, Object?> obj) => |
| TerminateResponseBody.fromMap(obj); |
| |
| TerminateResponseBody(); |
| |
| TerminateResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| /// Contains request result if success is true and error details if success is |
| /// false. |
| class TerminateThreadsResponseBody { |
| static TerminateThreadsResponseBody fromJson(Map<String, Object?> obj) => |
| TerminateThreadsResponseBody.fromMap(obj); |
| |
| TerminateThreadsResponseBody(); |
| |
| TerminateThreadsResponseBody.fromMap(Map<String, Object?> obj); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => {}; |
| } |
| |
| class TerminatedEventBody extends EventBody { |
| /// A debug adapter may set `restart` to true (or to an arbitrary object) to |
| /// request that the client restarts the session. |
| /// The value is not interpreted by the client and passed unmodified as an |
| /// attribute `__restart` to the `launch` and `attach` requests. |
| final Object? restart; |
| |
| static TerminatedEventBody fromJson(Map<String, Object?> obj) => |
| TerminatedEventBody.fromMap(obj); |
| |
| TerminatedEventBody({ |
| this.restart, |
| }); |
| |
| TerminatedEventBody.fromMap(Map<String, Object?> obj) |
| : restart = obj['restart']; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (restart != null) 'restart': restart, |
| }; |
| } |
| |
| class ThreadEventBody extends EventBody { |
| /// The reason for the event. |
| final String reason; |
| |
| /// The identifier of the thread. |
| final int threadId; |
| |
| static ThreadEventBody fromJson(Map<String, Object?> obj) => |
| ThreadEventBody.fromMap(obj); |
| |
| ThreadEventBody({ |
| required this.reason, |
| required this.threadId, |
| }); |
| |
| ThreadEventBody.fromMap(Map<String, Object?> obj) |
| : reason = obj['reason'] as String, |
| threadId = obj['threadId'] as int; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['reason'] is! String) { |
| return false; |
| } |
| if (obj['threadId'] is! int) { |
| return false; |
| } |
| return EventBody.canParse(obj); |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'reason': reason, |
| 'threadId': threadId, |
| }; |
| } |
| |
| class ThreadsResponseBody { |
| /// All threads. |
| final List<Thread> threads; |
| |
| static ThreadsResponseBody fromJson(Map<String, Object?> obj) => |
| ThreadsResponseBody.fromMap(obj); |
| |
| ThreadsResponseBody({ |
| required this.threads, |
| }); |
| |
| ThreadsResponseBody.fromMap(Map<String, Object?> obj) |
| : threads = (obj['threads'] as List) |
| .map((item) => Thread.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['threads'] is! List || |
| (obj['threads'].any((item) => !Thread.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'threads': threads, |
| }; |
| } |
| |
| class VariablesResponseBody { |
| /// All (or a range) of variables for the given variable reference. |
| final List<Variable> variables; |
| |
| static VariablesResponseBody fromJson(Map<String, Object?> obj) => |
| VariablesResponseBody.fromMap(obj); |
| |
| VariablesResponseBody({ |
| required this.variables, |
| }); |
| |
| VariablesResponseBody.fromMap(Map<String, Object?> obj) |
| : variables = (obj['variables'] as List) |
| .map((item) => Variable.fromJson(item as Map<String, Object?>)) |
| .toList(); |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if ((obj['variables'] is! List || |
| (obj['variables'].any((item) => !Variable.canParse(item))))) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| 'variables': variables, |
| }; |
| } |
| |
| class WriteMemoryResponseBody { |
| /// Property that should be returned when `allowPartial` is true to indicate |
| /// the number of bytes starting from address that were successfully written. |
| final int? bytesWritten; |
| |
| /// Property that should be returned when `allowPartial` is true to indicate |
| /// the offset of the first byte of data successfully written. Can be |
| /// negative. |
| final int? offset; |
| |
| static WriteMemoryResponseBody fromJson(Map<String, Object?> obj) => |
| WriteMemoryResponseBody.fromMap(obj); |
| |
| WriteMemoryResponseBody({ |
| this.bytesWritten, |
| this.offset, |
| }); |
| |
| WriteMemoryResponseBody.fromMap(Map<String, Object?> obj) |
| : bytesWritten = obj['bytesWritten'] as int?, |
| offset = obj['offset'] as int?; |
| |
| static bool canParse(Object? obj) { |
| if (obj is! Map<String, dynamic>) { |
| return false; |
| } |
| if (obj['bytesWritten'] is! int?) { |
| return false; |
| } |
| if (obj['offset'] is! int?) { |
| return false; |
| } |
| return true; |
| } |
| |
| Map<String, Object?> toJson() => { |
| if (bytesWritten != null) 'bytesWritten': bytesWritten, |
| if (offset != null) 'offset': offset, |
| }; |
| } |
| |
| const eventTypes = { |
| BreakpointEventBody: 'breakpoint', |
| CapabilitiesEventBody: 'capabilities', |
| ContinuedEventBody: 'continued', |
| ExitedEventBody: 'exited', |
| InitializedEventBody: 'initialized', |
| InvalidatedEventBody: 'invalidated', |
| LoadedSourceEventBody: 'loadedSource', |
| MemoryEventBody: 'memory', |
| ModuleEventBody: 'module', |
| OutputEventBody: 'output', |
| ProcessEventBody: 'process', |
| ProgressEndEventBody: 'progressEnd', |
| ProgressStartEventBody: 'progressStart', |
| ProgressUpdateEventBody: 'progressUpdate', |
| StoppedEventBody: 'stopped', |
| TerminatedEventBody: 'terminated', |
| ThreadEventBody: 'thread', |
| }; |
| |
| const commandTypes = { |
| AttachRequestArguments: 'attach', |
| BreakpointLocationsArguments: 'breakpointLocations', |
| CancelArguments: 'cancel', |
| CompletionsArguments: 'completions', |
| ConfigurationDoneArguments: 'configurationDone', |
| ContinueArguments: 'continue', |
| DataBreakpointInfoArguments: 'dataBreakpointInfo', |
| DisassembleArguments: 'disassemble', |
| DisconnectArguments: 'disconnect', |
| EvaluateArguments: 'evaluate', |
| ExceptionInfoArguments: 'exceptionInfo', |
| GotoArguments: 'goto', |
| GotoTargetsArguments: 'gotoTargets', |
| InitializeRequestArguments: 'initialize', |
| LaunchRequestArguments: 'launch', |
| LoadedSourcesArguments: 'loadedSources', |
| ModulesArguments: 'modules', |
| NextArguments: 'next', |
| PauseArguments: 'pause', |
| ReadMemoryArguments: 'readMemory', |
| RestartFrameArguments: 'restartFrame', |
| RestartArguments: 'restart', |
| ReverseContinueArguments: 'reverseContinue', |
| RunInTerminalRequestArguments: 'runInTerminal', |
| ScopesArguments: 'scopes', |
| SetBreakpointsArguments: 'setBreakpoints', |
| SetDataBreakpointsArguments: 'setDataBreakpoints', |
| SetExceptionBreakpointsArguments: 'setExceptionBreakpoints', |
| SetExpressionArguments: 'setExpression', |
| SetFunctionBreakpointsArguments: 'setFunctionBreakpoints', |
| SetInstructionBreakpointsArguments: 'setInstructionBreakpoints', |
| SetVariableArguments: 'setVariable', |
| SourceArguments: 'source', |
| StackTraceArguments: 'stackTrace', |
| StartDebuggingRequestArguments: 'startDebugging', |
| StepBackArguments: 'stepBack', |
| StepInArguments: 'stepIn', |
| StepInTargetsArguments: 'stepInTargets', |
| StepOutArguments: 'stepOut', |
| TerminateArguments: 'terminate', |
| TerminateThreadsArguments: 'terminateThreads', |
| VariablesArguments: 'variables', |
| WriteMemoryArguments: 'writeMemory', |
| }; |