megrez 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +75 -0
- data/docs/adr/000-template.md +16 -0
- data/docs/adr/001-generation-safe-references.md +20 -0
- data/docs/adr/README.md +3 -0
- data/lib/megrez/future.rb +111 -0
- data/lib/megrez/protocol.rb +133 -0
- data/lib/megrez/results.rb +152 -0
- data/lib/megrez/session/inspection.rb +108 -0
- data/lib/megrez/session/messages.rb +185 -0
- data/lib/megrez/session/requests.rb +143 -0
- data/lib/megrez/session.rb +200 -0
- data/lib/megrez/testing/fake_adapter.rb +178 -0
- data/lib/megrez/testing/fake_transport.rb +92 -0
- data/lib/megrez/testing.rb +7 -0
- data/lib/megrez/transport/framing.rb +63 -0
- data/lib/megrez/transport.rb +172 -0
- data/lib/megrez/version.rb +5 -0
- data/lib/megrez.rb +73 -0
- data/sig/megrez.rbs +208 -0
- metadata +64 -0
data/sig/megrez.rbs
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
module Megrez
|
|
2
|
+
VERSION: String
|
|
3
|
+
|
|
4
|
+
type json = nil | bool | Integer | Float | String | Array[json] | Hash[String | Symbol, json]
|
|
5
|
+
type object = Hash[String | Symbol, json]
|
|
6
|
+
type state = :initialized | :configuring | :running | :stopped | :terminated
|
|
7
|
+
|
|
8
|
+
class Error < StandardError
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
class Timeout < Error
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class Cancelled < Error
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
class AdapterError < Error
|
|
18
|
+
attr_reader command: String
|
|
19
|
+
attr_reader body: object?
|
|
20
|
+
def initialize: (String command, String message, ?object? body) -> void
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
class Breakpoint
|
|
24
|
+
attr_reader id: Integer?
|
|
25
|
+
attr_reader verified: bool
|
|
26
|
+
attr_reader source: object?
|
|
27
|
+
attr_reader line: Integer?
|
|
28
|
+
attr_reader column: Integer?
|
|
29
|
+
attr_reader message: String?
|
|
30
|
+
def self.new: (Integer?, bool, object?, Integer?, Integer?, String?) -> Breakpoint
|
|
31
|
+
| (id: Integer?, verified: bool, source: object?, line: Integer?, column: Integer?, message: String?) -> Breakpoint
|
|
32
|
+
def with: (?id: Integer?, ?verified: bool, ?source: object?, ?line: Integer?, ?column: Integer?, ?message: String?) -> Breakpoint
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
class SourceBreakpoint
|
|
36
|
+
attr_reader line: Integer
|
|
37
|
+
attr_reader column: Integer?
|
|
38
|
+
attr_reader condition: String?
|
|
39
|
+
attr_reader hit_condition: String?
|
|
40
|
+
attr_reader log_message: String?
|
|
41
|
+
def self.new: (Integer, Integer?, String?, String?, String?) -> SourceBreakpoint
|
|
42
|
+
| (line: Integer, column: Integer?, condition: String?, hit_condition: String?, log_message: String?) -> SourceBreakpoint
|
|
43
|
+
def with: (?line: Integer, ?column: Integer?, ?condition: String?, ?hit_condition: String?, ?log_message: String?) -> SourceBreakpoint
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class StackFrame
|
|
47
|
+
attr_reader id: Integer
|
|
48
|
+
attr_reader name: String
|
|
49
|
+
attr_reader source: object?
|
|
50
|
+
attr_reader line: Integer
|
|
51
|
+
attr_reader column: Integer
|
|
52
|
+
attr_reader presentation_hint: String?
|
|
53
|
+
def self.new: (Integer, String, object?, Integer, Integer, String?) -> StackFrame
|
|
54
|
+
| (id: Integer, name: String, source: object?, line: Integer, column: Integer, presentation_hint: String?) -> StackFrame
|
|
55
|
+
def with: (?id: Integer, ?name: String, ?source: object?, ?line: Integer, ?column: Integer, ?presentation_hint: String?) -> StackFrame
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
class Scope
|
|
59
|
+
attr_reader name: String
|
|
60
|
+
attr_reader variables_reference: Integer
|
|
61
|
+
attr_reader expensive: bool
|
|
62
|
+
attr_reader presentation_hint: String?
|
|
63
|
+
def self.new: (String, Integer, bool, String?) -> Scope
|
|
64
|
+
| (name: String, variables_reference: Integer, expensive: bool, presentation_hint: String?) -> Scope
|
|
65
|
+
def with: (?name: String, ?variables_reference: Integer, ?expensive: bool, ?presentation_hint: String?) -> Scope
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
class Variable
|
|
69
|
+
attr_reader name: String
|
|
70
|
+
attr_reader value: String
|
|
71
|
+
attr_reader type: String?
|
|
72
|
+
attr_reader variables_reference: Integer
|
|
73
|
+
attr_reader named_count: Integer?
|
|
74
|
+
attr_reader indexed_count: Integer?
|
|
75
|
+
attr_reader memory_reference: String?
|
|
76
|
+
def self.new: (String, String, String?, Integer, Integer?, Integer?, String?) -> Variable
|
|
77
|
+
| (name: String, value: String, type: String?, variables_reference: Integer, named_count: Integer?, indexed_count: Integer?, memory_reference: String?) -> Variable
|
|
78
|
+
def with: (?name: String, ?value: String, ?type: String?, ?variables_reference: Integer, ?named_count: Integer?, ?indexed_count: Integer?, ?memory_reference: String?) -> Variable
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
class ThreadInfo
|
|
82
|
+
attr_reader id: Integer
|
|
83
|
+
attr_reader name: String
|
|
84
|
+
def self.new: (Integer, String) -> ThreadInfo
|
|
85
|
+
| (id: Integer, name: String) -> ThreadInfo
|
|
86
|
+
def with: (?id: Integer, ?name: String) -> ThreadInfo
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
module Protocol
|
|
90
|
+
MAX_COLLECTION: Integer
|
|
91
|
+
MAX_DEPTH: Integer
|
|
92
|
+
def self.validate_message: (untyped message) -> object
|
|
93
|
+
def self.validate_outbound: [A] (A value) -> A
|
|
94
|
+
def self.validate_json: (json value, Integer depth) -> void
|
|
95
|
+
def self.object: (untyped value, String name) -> object
|
|
96
|
+
def self.collection: [A] (untyped value, String name) -> Array[A]
|
|
97
|
+
def self.string: (untyped value, String name, ?empty: bool, ?max: Integer) -> String
|
|
98
|
+
def self.integer: (untyped value, String name) -> Integer
|
|
99
|
+
def self.uint: (untyped value, String name, ?positive: bool) -> Integer
|
|
100
|
+
def self.boolean: (untyped value, String name) -> bool
|
|
101
|
+
def self.optional_string: (untyped value, String name, ?empty: bool, ?max: Integer) -> String?
|
|
102
|
+
def self.optional_uint: (untyped value, String name) -> Integer?
|
|
103
|
+
def self.deep_freeze: [A] (A value) -> A
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
class Future
|
|
107
|
+
class Subscription
|
|
108
|
+
def initialize: () { () -> untyped } -> void
|
|
109
|
+
def detach: () -> untyped
|
|
110
|
+
end
|
|
111
|
+
attr_reader id: Integer
|
|
112
|
+
attr_reader callback_errors: Array[Error]
|
|
113
|
+
def initialize: (Integer id, ?on_error: ^(Error) -> untyped) ?{ (Integer) -> untyped } -> void
|
|
114
|
+
def fulfill: (?untyped value, ?error: Exception?) -> Future?
|
|
115
|
+
def then: () { (untyped, Exception?) -> untyped } -> Future
|
|
116
|
+
def on_complete: () { (untyped, Exception?) -> untyped } -> Subscription
|
|
117
|
+
def done?: () -> bool
|
|
118
|
+
def await: (?timeout: Numeric?) -> untyped
|
|
119
|
+
def cancel: () -> bool
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
class Transport
|
|
123
|
+
MAX_MESSAGE: Integer
|
|
124
|
+
MAX_HEADER_LINE: Integer
|
|
125
|
+
MAX_HEADERS: Integer
|
|
126
|
+
attr_reader stderr_lines: Array[String]
|
|
127
|
+
attr_reader pid: Integer?
|
|
128
|
+
def self.stdio: (command: Array[String], ?env: Hash[String, String?], ?cwd: String?) -> Transport
|
|
129
|
+
def self.tcp: (host: String, port: Integer, ?connect_timeout: Numeric) -> Transport
|
|
130
|
+
def self.valid_environment?: (untyped env) -> bool
|
|
131
|
+
def self.read_message: (IO | StringIO io) -> object?
|
|
132
|
+
def self.frame: (object message) -> String
|
|
133
|
+
def initialize: (IO input, IO output, ?process: Process::Waiter?, ?stderr: IO?, ?closeables: Array[IO]) -> void
|
|
134
|
+
def listen: () { (object?, Exception?) -> untyped } -> Transport
|
|
135
|
+
def write: (object message) -> nil
|
|
136
|
+
def alive?: () -> bool
|
|
137
|
+
def close: () -> nil
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
class Session
|
|
141
|
+
attr_reader transport: Transport
|
|
142
|
+
def self.stdio: (command: Array[String], ?env: Hash[String, String?], ?cwd: String?, ?dispatch: ^() { () -> untyped } -> untyped) -> Session
|
|
143
|
+
def self.tcp: (host: String, port: Integer, ?dispatch: ^() { () -> untyped } -> untyped, ?connect_timeout: Numeric) -> Session
|
|
144
|
+
def initialize: (Transport transport, ?dispatch: ^() { () -> untyped } -> untyped) -> void
|
|
145
|
+
def start: (adapter_id: String, ?lines_start_at_1: bool, ?columns_start_at_1: bool, ?path_format: String, ?timeout: Numeric) -> Hash[String, json]
|
|
146
|
+
def request: (String | Symbol command, ?object arguments) -> Future
|
|
147
|
+
def on: (String | Symbol event) { (object body) -> untyped } -> Proc
|
|
148
|
+
def on_request: (String | Symbol command) { (object arguments) -> object? } -> Proc
|
|
149
|
+
def capabilities: () -> Hash[String, json]
|
|
150
|
+
def state: () -> state
|
|
151
|
+
def generation: () -> Integer
|
|
152
|
+
def errors: () -> Array[Error]
|
|
153
|
+
def close: () -> nil
|
|
154
|
+
|
|
155
|
+
def launch: (object configuration) -> Future
|
|
156
|
+
def attach: (object configuration) -> Future
|
|
157
|
+
def configuration_done: () -> Future
|
|
158
|
+
def disconnect: (?terminate: bool, ?restart: bool) -> Future
|
|
159
|
+
def set_breakpoints: (String source_path, Array[SourceBreakpoint] breakpoints) -> Future
|
|
160
|
+
def set_function_breakpoints: (Array[String] names) -> Future
|
|
161
|
+
def set_exception_breakpoints: (Array[String] filters, ?options: Array[object]) -> Future
|
|
162
|
+
def set_data_breakpoints: (Array[object] descriptors) -> Future
|
|
163
|
+
def continue: (Integer thread_id, ?all: bool) -> Future
|
|
164
|
+
def step_over: (Integer thread_id, ?granularity: :statement | :line | :instruction) -> Future
|
|
165
|
+
def step_in: (Integer thread_id, ?target_id: Integer?) -> Future
|
|
166
|
+
def step_out: (Integer thread_id) -> Future
|
|
167
|
+
def pause: (Integer thread_id) -> Future
|
|
168
|
+
def restart_frame: (Integer frame_id) -> Future
|
|
169
|
+
def restart: (?object arguments) -> Future
|
|
170
|
+
def terminate: () -> Future
|
|
171
|
+
def threads: () -> Future
|
|
172
|
+
def stack_trace: (Integer thread_id, ?start: Integer, ?levels: Integer) -> Future
|
|
173
|
+
def scopes: (Integer frame_id) -> Future
|
|
174
|
+
def variables: (Integer reference, ?start: Integer?, ?count: Integer?, ?filter: (:indexed | :named)?) -> Future
|
|
175
|
+
def set_variable: (Integer reference, String name, String value) -> Future
|
|
176
|
+
def set_expression: (String expression, String value, ?frame_id: Integer?) -> Future
|
|
177
|
+
def evaluate: (String expression, ?frame_id: Integer?, ?context: String) -> Future
|
|
178
|
+
def completions: (String text, Integer column, ?frame_id: Integer?) -> Future
|
|
179
|
+
def source: (Integer reference) -> Future
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
module Testing
|
|
183
|
+
class FakeAdapter
|
|
184
|
+
DEFAULT_CAPABILITIES: Hash[String, json]
|
|
185
|
+
attr_reader messages: Array[object]
|
|
186
|
+
def self.command: () -> Array[String]
|
|
187
|
+
def self.run_stdio: () -> untyped
|
|
188
|
+
def initialize: (?responses: Hash[String | Symbol, untyped], ?capabilities: Hash[String, json], ?variable_count: Integer) -> void
|
|
189
|
+
def transport: () -> FakeTransport
|
|
190
|
+
def attach: () { (Array[object]) -> untyped } -> Proc
|
|
191
|
+
def detach: (Proc sink) -> untyped
|
|
192
|
+
def emit: (String | Symbol event, ?object body) -> object
|
|
193
|
+
def request_client: (String | Symbol command, ?object arguments) -> object
|
|
194
|
+
def dispatch: (object message) -> Array[object]
|
|
195
|
+
def serve: (IO input, ?IO output) -> untyped
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
class FakeTransport < Transport
|
|
199
|
+
attr_reader stderr_lines: Array[String]
|
|
200
|
+
attr_reader pid: Integer
|
|
201
|
+
def initialize: (FakeAdapter adapter) ?{ (object?, Exception?) -> untyped } -> void
|
|
202
|
+
def listen: () { (object?, Exception?) -> untyped } -> FakeTransport
|
|
203
|
+
def write: (object message) -> nil
|
|
204
|
+
def alive?: () -> bool
|
|
205
|
+
def close: () -> nil
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: megrez
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Yudai Takada
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies: []
|
|
12
|
+
email:
|
|
13
|
+
- t.yudai92@gmail.com
|
|
14
|
+
executables: []
|
|
15
|
+
extensions: []
|
|
16
|
+
extra_rdoc_files: []
|
|
17
|
+
files:
|
|
18
|
+
- CHANGELOG.md
|
|
19
|
+
- LICENSE.txt
|
|
20
|
+
- README.md
|
|
21
|
+
- docs/adr/000-template.md
|
|
22
|
+
- docs/adr/001-generation-safe-references.md
|
|
23
|
+
- docs/adr/README.md
|
|
24
|
+
- lib/megrez.rb
|
|
25
|
+
- lib/megrez/future.rb
|
|
26
|
+
- lib/megrez/protocol.rb
|
|
27
|
+
- lib/megrez/results.rb
|
|
28
|
+
- lib/megrez/session.rb
|
|
29
|
+
- lib/megrez/session/inspection.rb
|
|
30
|
+
- lib/megrez/session/messages.rb
|
|
31
|
+
- lib/megrez/session/requests.rb
|
|
32
|
+
- lib/megrez/testing.rb
|
|
33
|
+
- lib/megrez/testing/fake_adapter.rb
|
|
34
|
+
- lib/megrez/testing/fake_transport.rb
|
|
35
|
+
- lib/megrez/transport.rb
|
|
36
|
+
- lib/megrez/transport/framing.rb
|
|
37
|
+
- lib/megrez/version.rb
|
|
38
|
+
- sig/megrez.rbs
|
|
39
|
+
homepage: https://github.com/noxdea/megrez
|
|
40
|
+
licenses:
|
|
41
|
+
- MIT
|
|
42
|
+
metadata:
|
|
43
|
+
source_code_uri: https://github.com/noxdea/megrez
|
|
44
|
+
changelog_uri: https://github.com/noxdea/megrez/blob/main/CHANGELOG.md
|
|
45
|
+
allowed_push_host: https://rubygems.org
|
|
46
|
+
rubygems_mfa_required: 'true'
|
|
47
|
+
rdoc_options: []
|
|
48
|
+
require_paths:
|
|
49
|
+
- lib
|
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ">="
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '3.1'
|
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - ">="
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: '0'
|
|
60
|
+
requirements: []
|
|
61
|
+
rubygems_version: 4.0.16
|
|
62
|
+
specification_version: 4
|
|
63
|
+
summary: Pure Ruby Debug Adapter Protocol client
|
|
64
|
+
test_files: []
|