mangrove 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.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +42 -0
  3. data/LICENSE +21 -0
  4. data/README.md +54 -0
  5. data/Rakefile +14 -0
  6. data/lib/mangrove/control_flow/control_signal.rb +16 -0
  7. data/lib/mangrove/control_flow/rewriter.rb +152 -0
  8. data/lib/mangrove/control_flow.rb +84 -0
  9. data/lib/mangrove/interfaces.rb +8 -0
  10. data/lib/mangrove/mangrove.rb +35 -0
  11. data/lib/mangrove/option/control_signal.rb +33 -0
  12. data/lib/mangrove/option.rb +134 -0
  13. data/lib/mangrove/result/control_signal.rb +33 -0
  14. data/lib/mangrove/result.rb +167 -0
  15. data/lib/mangrove/version.rb +6 -0
  16. data/lib/mangrove.rb +8 -0
  17. data/sig/mangrove.rbs +4 -0
  18. data/sorbet/config +4 -0
  19. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  20. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  21. data/sorbet/rbi/gems/base64@0.1.1.rbi +172 -0
  22. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  23. data/sorbet/rbi/gems/erubi@1.12.0.rbi +145 -0
  24. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  25. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  26. data/sorbet/rbi/gems/method_source@1.0.0.rbi +272 -0
  27. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  28. data/sorbet/rbi/gems/ordinare@0.4.0.rbi +77 -0
  29. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  30. data/sorbet/rbi/gems/parser@3.2.2.3.rbi +7253 -0
  31. data/sorbet/rbi/gems/prettier_print@1.2.1.rbi +951 -0
  32. data/sorbet/rbi/gems/racc@1.7.1.rbi +161 -0
  33. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  34. data/sorbet/rbi/gems/rake@13.0.6.rbi +3024 -0
  35. data/sorbet/rbi/gems/rbi@0.0.17.rbi +2972 -0
  36. data/sorbet/rbi/gems/regexp_parser@2.8.1.rbi +3749 -0
  37. data/sorbet/rbi/gems/rexml@3.2.6.rbi +4781 -0
  38. data/sorbet/rbi/gems/rspec-core@3.12.2.rbi +10805 -0
  39. data/sorbet/rbi/gems/rspec-expectations@3.12.3.rbi +8100 -0
  40. data/sorbet/rbi/gems/rspec-mocks@3.12.6.rbi +5310 -0
  41. data/sorbet/rbi/gems/rspec-sorbet@1.9.2.rbi +163 -0
  42. data/sorbet/rbi/gems/rspec-support@3.12.1.rbi +1609 -0
  43. data/sorbet/rbi/gems/rspec@3.12.0.rbi +82 -0
  44. data/sorbet/rbi/gems/ruboclean@0.4.0.rbi +189 -0
  45. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +6985 -0
  46. data/sorbet/rbi/gems/rubocop@1.56.0.rbi +56491 -0
  47. data/sorbet/rbi/gems/ruby-lsp@0.8.0.rbi +11 -0
  48. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  49. data/sorbet/rbi/gems/spoom@1.2.3.rbi +3203 -0
  50. data/sorbet/rbi/gems/syntax_tree@6.1.1.rbi +22855 -0
  51. data/sorbet/rbi/gems/tapioca@0.11.8.rbi +3349 -0
  52. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  53. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  54. data/sorbet/rbi/gems/unparser@0.6.8.rbi +4525 -0
  55. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  56. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  57. data/sorbet/rbi/shims/gems/rspec-core.rbi +12 -0
  58. data/sorbet/rbi/shims/gems/rspec-expectations.rbi +8 -0
  59. data/sorbet/rbi/shims/mangrove/option.rbi +15 -0
  60. data/sorbet/rbi/shims/mangrove/result.rbi +15 -0
  61. data/sorbet/tapioca/config.yml +13 -0
  62. data/sorbet/tapioca/require.rb +4 -0
  63. metadata +161 -0
@@ -0,0 +1,3203 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `spoom` gem.
5
+ # Please instead update this file by running `bin/tapioca gem spoom`.
6
+
7
+ # source://spoom//lib/spoom.rb#7
8
+ module Spoom; end
9
+
10
+ # source://spoom//lib/spoom/cli/helper.rb#9
11
+ module Spoom::Cli; end
12
+
13
+ # source://spoom//lib/spoom/cli/bump.rb#9
14
+ class Spoom::Cli::Bump < ::Thor
15
+ include ::Spoom::Colorize
16
+ include ::Spoom::Cli::Helper
17
+
18
+ # source://spoom//lib/spoom/cli/bump.rb#49
19
+ sig { params(directory: ::String).void }
20
+ def bump(directory = T.unsafe(nil)); end
21
+
22
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
23
+
24
+ # source://spoom//lib/spoom/cli/bump.rb#170
25
+ def print_changes(files, command:, from: T.unsafe(nil), to: T.unsafe(nil), dry: T.unsafe(nil), path: T.unsafe(nil)); end
26
+
27
+ # source://spoom//lib/spoom/cli/bump.rb#192
28
+ def undo_changes(files, from_strictness); end
29
+ end
30
+
31
+ # source://spoom//lib/spoom/cli/config.rb#9
32
+ class Spoom::Cli::Config < ::Thor
33
+ include ::Spoom::Colorize
34
+ include ::Spoom::Cli::Helper
35
+
36
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
37
+
38
+ # source://spoom//lib/spoom/cli/config.rb#15
39
+ def show; end
40
+ end
41
+
42
+ # source://spoom//lib/spoom/cli/coverage.rb#9
43
+ class Spoom::Cli::Coverage < ::Thor
44
+ include ::Spoom::Colorize
45
+ include ::Spoom::Cli::Helper
46
+
47
+ # source://spoom//lib/spoom/cli/coverage.rb#198
48
+ def bundle_install(path, sha); end
49
+
50
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
51
+
52
+ # source://spoom//lib/spoom/cli/coverage.rb#210
53
+ def message_no_data(file); end
54
+
55
+ # source://spoom//lib/spoom/cli/coverage.rb#173
56
+ def open(file = T.unsafe(nil)); end
57
+
58
+ # source://spoom//lib/spoom/cli/coverage.rb#189
59
+ def parse_time(string, option); end
60
+
61
+ # source://spoom//lib/spoom/cli/coverage.rb#142
62
+ def report; end
63
+
64
+ # source://spoom//lib/spoom/cli/coverage.rb#20
65
+ def snapshot; end
66
+
67
+ # source://spoom//lib/spoom/cli/coverage.rb#42
68
+ def timeline; end
69
+ end
70
+
71
+ # source://spoom//lib/spoom/cli/coverage.rb#12
72
+ Spoom::Cli::Coverage::DATA_DIR = T.let(T.unsafe(nil), String)
73
+
74
+ # source://spoom//lib/spoom/cli/helper.rb#10
75
+ module Spoom::Cli::Helper
76
+ include ::Spoom::Colorize
77
+
78
+ requires_ancestor { Thor }
79
+
80
+ # source://spoom//lib/spoom/cli/helper.rb#119
81
+ sig { params(string: ::String).returns(::String) }
82
+ def blue(string); end
83
+
84
+ # Is the `--color` option true?
85
+ #
86
+ # source://spoom//lib/spoom/cli/helper.rb#83
87
+ sig { returns(T::Boolean) }
88
+ def color?; end
89
+
90
+ # Colorize a string if `color?`
91
+ #
92
+ # source://spoom//lib/spoom/cli/helper.rb#112
93
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
94
+ def colorize(string, *color); end
95
+
96
+ # Returns the context at `--path` (by default the current working directory)
97
+ #
98
+ # source://spoom//lib/spoom/cli/helper.rb#51
99
+ sig { returns(::Spoom::Context) }
100
+ def context; end
101
+
102
+ # Raise if `spoom` is not ran inside a context with a `sorbet/config` file
103
+ #
104
+ # source://spoom//lib/spoom/cli/helper.rb#57
105
+ sig { returns(::Spoom::Context) }
106
+ def context_requiring_sorbet!; end
107
+
108
+ # source://spoom//lib/spoom/cli/helper.rb#124
109
+ sig { params(string: ::String).returns(::String) }
110
+ def cyan(string); end
111
+
112
+ # Return the path specified through `--path`
113
+ #
114
+ # source://spoom//lib/spoom/cli/helper.rb#72
115
+ sig { returns(::String) }
116
+ def exec_path; end
117
+
118
+ # source://spoom//lib/spoom/cli/helper.rb#129
119
+ sig { params(string: ::String).returns(::String) }
120
+ def gray(string); end
121
+
122
+ # source://spoom//lib/spoom/cli/helper.rb#134
123
+ sig { params(string: ::String).returns(::String) }
124
+ def green(string); end
125
+
126
+ # source://spoom//lib/spoom/cli/helper.rb#88
127
+ sig { params(string: ::String).returns(::String) }
128
+ def highlight(string); end
129
+
130
+ # source://spoom//lib/spoom/cli/helper.rb#139
131
+ sig { params(string: ::String).returns(::String) }
132
+ def red(string); end
133
+
134
+ # Print `message` on `$stdout`
135
+ #
136
+ # source://spoom//lib/spoom/cli/helper.rb#20
137
+ sig { params(message: ::String).void }
138
+ def say(message); end
139
+
140
+ # Print `message` on `$stderr`
141
+ #
142
+ # The message is prefixed by a status (default: `Error`).
143
+ #
144
+ # source://spoom//lib/spoom/cli/helper.rb#39
145
+ sig { params(message: ::String, status: T.nilable(::String), nl: T::Boolean).void }
146
+ def say_error(message, status: T.unsafe(nil), nl: T.unsafe(nil)); end
147
+
148
+ # source://spoom//lib/spoom/cli/helper.rb#144
149
+ sig { params(string: ::String).returns(::String) }
150
+ def yellow(string); end
151
+ end
152
+
153
+ # source://spoom//lib/spoom/cli/lsp.rb#10
154
+ class Spoom::Cli::LSP < ::Thor
155
+ include ::Spoom::Colorize
156
+ include ::Spoom::Cli::Helper
157
+
158
+ # TODO: options, filter, limit, kind etc.. filter rbi
159
+ #
160
+ # source://spoom//lib/spoom/cli/lsp.rb#55
161
+ def defs(file, line, col); end
162
+
163
+ # TODO: options, filter, limit, kind etc.. filter rbi
164
+ #
165
+ # source://spoom//lib/spoom/cli/lsp.rb#65
166
+ def find(query); end
167
+
168
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
169
+
170
+ # TODO: options, filter, limit, kind etc.. filter rbi
171
+ #
172
+ # source://spoom//lib/spoom/cli/lsp.rb#41
173
+ def hover(file, line, col); end
174
+
175
+ # TODO: options, filter, limit, kind etc.. filter rbi
176
+ #
177
+ # source://spoom//lib/spoom/cli/lsp.rb#26
178
+ def list; end
179
+
180
+ # source://spoom//lib/spoom/cli/lsp.rb#114
181
+ def lsp_client; end
182
+
183
+ # TODO: options, filter, limit, kind etc.. filter rbi
184
+ #
185
+ # source://spoom//lib/spoom/cli/lsp.rb#85
186
+ def refs(file, line, col); end
187
+
188
+ # source://spoom//lib/spoom/cli/lsp.rb#137
189
+ def run(&block); end
190
+
191
+ # source://spoom//lib/spoom/cli/lsp.rb#16
192
+ def show; end
193
+
194
+ # TODO: options, filter, limit, kind etc.. filter rbi
195
+ #
196
+ # source://spoom//lib/spoom/cli/lsp.rb#95
197
+ def sigs(file, line, col); end
198
+
199
+ # source://spoom//lib/spoom/cli/lsp.rb#129
200
+ def symbol_printer; end
201
+
202
+ # TODO: options, filter, limit, kind etc.. filter rbi
203
+ #
204
+ # source://spoom//lib/spoom/cli/lsp.rb#75
205
+ def symbols(file); end
206
+
207
+ # source://spoom//lib/spoom/cli/lsp.rb#162
208
+ def to_uri(path); end
209
+
210
+ # TODO: options, filter, limit, kind etc.. filter rbi
211
+ #
212
+ # source://spoom//lib/spoom/cli/lsp.rb#105
213
+ def types(file, line, col); end
214
+ end
215
+
216
+ # source://spoom//lib/spoom/cli.rb#16
217
+ class Spoom::Cli::Main < ::Thor
218
+ include ::Spoom::Colorize
219
+ include ::Spoom::Cli::Helper
220
+
221
+ # source://spoom//lib/spoom/cli.rb#61
222
+ def __print_version; end
223
+
224
+ # source://thor/1.2.2/lib/thor.rb#239
225
+ def bump(*args); end
226
+
227
+ # source://thor/1.2.2/lib/thor.rb#239
228
+ def config(*args); end
229
+
230
+ # source://thor/1.2.2/lib/thor.rb#239
231
+ def coverage(*args); end
232
+
233
+ # source://spoom//lib/spoom/cli.rb#43
234
+ def files; end
235
+
236
+ # source://thor/1.2.2/lib/thor.rb#239
237
+ def lsp(*args); end
238
+
239
+ # source://thor/1.2.2/lib/thor.rb#239
240
+ def tc(*args); end
241
+
242
+ class << self
243
+ # @return [Boolean]
244
+ #
245
+ # source://spoom//lib/spoom/cli.rb#68
246
+ def exit_on_failure?; end
247
+ end
248
+ end
249
+
250
+ # source://spoom//lib/spoom/cli/run.rb#6
251
+ class Spoom::Cli::Run < ::Thor
252
+ include ::Spoom::Colorize
253
+ include ::Spoom::Cli::Helper
254
+
255
+ # source://spoom//lib/spoom/cli/run.rb#131
256
+ def colorize_message(message); end
257
+
258
+ # source://spoom//lib/spoom/cli/run.rb#122
259
+ def format_error(error, format); end
260
+
261
+ def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end
262
+
263
+ # source://spoom//lib/spoom/cli/run.rb#26
264
+ def tc(*paths_to_select); end
265
+ end
266
+
267
+ # source://spoom//lib/spoom/cli/run.rb#15
268
+ Spoom::Cli::Run::DEFAULT_FORMAT = T.let(T.unsafe(nil), String)
269
+
270
+ # source://spoom//lib/spoom/cli/run.rb#11
271
+ Spoom::Cli::Run::SORT_CODE = T.let(T.unsafe(nil), String)
272
+
273
+ # source://spoom//lib/spoom/cli/run.rb#13
274
+ Spoom::Cli::Run::SORT_ENUM = T.let(T.unsafe(nil), Array)
275
+
276
+ # source://spoom//lib/spoom/cli/run.rb#12
277
+ Spoom::Cli::Run::SORT_LOC = T.let(T.unsafe(nil), String)
278
+
279
+ # source://spoom//lib/spoom/colors.rb#5
280
+ class Spoom::Color < ::T::Enum
281
+ enums do
282
+ CLEAR = new
283
+ BOLD = new
284
+ BLACK = new
285
+ RED = new
286
+ GREEN = new
287
+ YELLOW = new
288
+ BLUE = new
289
+ MAGENTA = new
290
+ CYAN = new
291
+ WHITE = new
292
+ LIGHT_BLACK = new
293
+ LIGHT_RED = new
294
+ LIGHT_GREEN = new
295
+ LIGHT_YELLOW = new
296
+ LIGHT_BLUE = new
297
+ LIGHT_MAGENTA = new
298
+ LIGHT_CYAN = new
299
+ LIGHT_WHITE = new
300
+ end
301
+
302
+ # source://spoom//lib/spoom/colors.rb#32
303
+ sig { returns(::String) }
304
+ def ansi_code; end
305
+ end
306
+
307
+ # source://spoom//lib/spoom/colors.rb#37
308
+ module Spoom::Colorize
309
+ # source://spoom//lib/spoom/colors.rb#41
310
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
311
+ def set_color(string, *color); end
312
+ end
313
+
314
+ # An abstraction to a Ruby project context
315
+ #
316
+ # A context maps to a directory in the file system.
317
+ # It is used to manipulate files and run commands in the context of this directory.
318
+ #
319
+ # source://spoom//lib/spoom/context/bundle.rb#5
320
+ class Spoom::Context
321
+ include ::Spoom::Context::Bundle
322
+ include ::Spoom::Context::Exec
323
+ include ::Spoom::Context::FileSystem
324
+ include ::Spoom::Context::Git
325
+ include ::Spoom::Context::Sorbet
326
+
327
+ # Create a new context about `absolute_path`
328
+ #
329
+ # The directory will not be created if it doesn't exist.
330
+ # Call `#make!` to create it.
331
+ #
332
+ # source://spoom//lib/spoom/context.rb#51
333
+ sig { params(absolute_path: ::String).void }
334
+ def initialize(absolute_path); end
335
+
336
+ # The absolute path to the directory this context is about
337
+ #
338
+ # source://spoom//lib/spoom/context.rb#44
339
+ sig { returns(::String) }
340
+ def absolute_path; end
341
+
342
+ class << self
343
+ # Create a new context in the system's temporary directory
344
+ #
345
+ # `name` is used as prefix to the temporary directory name.
346
+ # The directory will be created if it doesn't exist.
347
+ #
348
+ # source://spoom//lib/spoom/context.rb#37
349
+ sig { params(name: T.nilable(::String)).returns(T.attached_class) }
350
+ def mktmp!(name = T.unsafe(nil)); end
351
+ end
352
+ end
353
+
354
+ # Bundle features for a context
355
+ #
356
+ # source://spoom//lib/spoom/context/bundle.rb#7
357
+ module Spoom::Context::Bundle
358
+ requires_ancestor { Spoom::Context }
359
+
360
+ # Run a command with `bundle` in this context directory
361
+ #
362
+ # source://spoom//lib/spoom/context/bundle.rb#33
363
+ sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
364
+ def bundle(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
365
+
366
+ # Run a command `bundle exec` in this context directory
367
+ #
368
+ # source://spoom//lib/spoom/context/bundle.rb#46
369
+ sig { params(command: ::String, version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
370
+ def bundle_exec(command, version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
371
+
372
+ # Run `bundle install` in this context directory
373
+ #
374
+ # source://spoom//lib/spoom/context/bundle.rb#40
375
+ sig { params(version: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
376
+ def bundle_install!(version: T.unsafe(nil), capture_err: T.unsafe(nil)); end
377
+
378
+ # Get `gem` version from the `Gemfile.lock` content
379
+ #
380
+ # Returns `nil` if `gem` cannot be found in the Gemfile.
381
+ #
382
+ # source://spoom//lib/spoom/context/bundle.rb#62
383
+ sig { params(gem: ::String).returns(T.nilable(::String)) }
384
+ def gem_version_from_gemfile_lock(gem); end
385
+
386
+ # source://spoom//lib/spoom/context/bundle.rb#51
387
+ sig { returns(T::Hash[::String, ::Bundler::LazySpecification]) }
388
+ def gemfile_lock_specs; end
389
+
390
+ # Read the contents of the Gemfile in this context directory
391
+ #
392
+ # source://spoom//lib/spoom/context/bundle.rb#15
393
+ sig { returns(T.nilable(::String)) }
394
+ def read_gemfile; end
395
+
396
+ # Read the contents of the Gemfile.lock in this context directory
397
+ #
398
+ # source://spoom//lib/spoom/context/bundle.rb#21
399
+ sig { returns(T.nilable(::String)) }
400
+ def read_gemfile_lock; end
401
+
402
+ # Set the `contents` of the Gemfile in this context directory
403
+ #
404
+ # source://spoom//lib/spoom/context/bundle.rb#27
405
+ sig { params(contents: ::String, append: T::Boolean).void }
406
+ def write_gemfile!(contents, append: T.unsafe(nil)); end
407
+ end
408
+
409
+ # Execution features for a context
410
+ #
411
+ # source://spoom//lib/spoom/context/exec.rb#27
412
+ module Spoom::Context::Exec
413
+ requires_ancestor { Spoom::Context }
414
+
415
+ # Run a command in this context directory
416
+ #
417
+ # source://spoom//lib/spoom/context/exec.rb#35
418
+ sig { params(command: ::String, capture_err: T::Boolean).returns(::Spoom::ExecResult) }
419
+ def exec(command, capture_err: T.unsafe(nil)); end
420
+ end
421
+
422
+ # File System features for a context
423
+ #
424
+ # source://spoom//lib/spoom/context/file_system.rb#7
425
+ module Spoom::Context::FileSystem
426
+ requires_ancestor { Spoom::Context }
427
+
428
+ # Returns the absolute path to `relative_path` in the context's directory
429
+ #
430
+ # source://spoom//lib/spoom/context/file_system.rb#15
431
+ sig { params(relative_path: ::String).returns(::String) }
432
+ def absolute_path_to(relative_path); end
433
+
434
+ # source://spoom//lib/spoom/context/file_system.rb#53
435
+ sig do
436
+ params(
437
+ allow_extensions: T::Array[::String],
438
+ allow_mime_types: T::Array[::String],
439
+ exclude_patterns: T::Array[::String]
440
+ ).returns(T::Array[::String])
441
+ end
442
+ def collect_files(allow_extensions: T.unsafe(nil), allow_mime_types: T.unsafe(nil), exclude_patterns: T.unsafe(nil)); end
443
+
444
+ # Delete this context and its content
445
+ #
446
+ # Warning: it will `rm -rf` the context directory on the file system.
447
+ #
448
+ # source://spoom//lib/spoom/context/file_system.rb#105
449
+ sig { void }
450
+ def destroy!; end
451
+
452
+ # Does the context directory at `absolute_path` exist and is a directory?
453
+ #
454
+ # source://spoom//lib/spoom/context/file_system.rb#21
455
+ sig { returns(T::Boolean) }
456
+ def exist?; end
457
+
458
+ # Does `relative_path` point to an existing file in this context directory?
459
+ #
460
+ # source://spoom//lib/spoom/context/file_system.rb#65
461
+ sig { params(relative_path: ::String).returns(T::Boolean) }
462
+ def file?(relative_path); end
463
+
464
+ # List all files in this context matching `pattern`
465
+ #
466
+ # source://spoom//lib/spoom/context/file_system.rb#34
467
+ sig { params(pattern: ::String).returns(T::Array[::String]) }
468
+ def glob(pattern = T.unsafe(nil)); end
469
+
470
+ # List all files at the top level of this context directory
471
+ #
472
+ # source://spoom//lib/spoom/context/file_system.rb#42
473
+ sig { returns(T::Array[::String]) }
474
+ def list; end
475
+
476
+ # Create the context directory at `absolute_path`
477
+ #
478
+ # source://spoom//lib/spoom/context/file_system.rb#27
479
+ sig { void }
480
+ def mkdir!; end
481
+
482
+ # Move the file or directory from `from_relative_path` to `to_relative_path`
483
+ #
484
+ # source://spoom//lib/spoom/context/file_system.rb#95
485
+ sig { params(from_relative_path: ::String, to_relative_path: ::String).void }
486
+ def move!(from_relative_path, to_relative_path); end
487
+
488
+ # Return the contents of the file at `relative_path` in this context directory
489
+ #
490
+ # Will raise if the file doesn't exist.
491
+ #
492
+ # source://spoom//lib/spoom/context/file_system.rb#73
493
+ sig { params(relative_path: ::String).returns(::String) }
494
+ def read(relative_path); end
495
+
496
+ # Remove the path at `relative_path` (recursive + force) in this context directory
497
+ #
498
+ # source://spoom//lib/spoom/context/file_system.rb#89
499
+ sig { params(relative_path: ::String).void }
500
+ def remove!(relative_path); end
501
+
502
+ # Write `contents` in the file at `relative_path` in this context directory
503
+ #
504
+ # Append to the file if `append` is true.
505
+ #
506
+ # source://spoom//lib/spoom/context/file_system.rb#81
507
+ sig { params(relative_path: ::String, contents: ::String, append: T::Boolean).void }
508
+ def write!(relative_path, contents = T.unsafe(nil), append: T.unsafe(nil)); end
509
+ end
510
+
511
+ # Git features for a context
512
+ #
513
+ # source://spoom//lib/spoom/context/git.rb#35
514
+ module Spoom::Context::Git
515
+ requires_ancestor { Spoom::Context }
516
+
517
+ # Run a command prefixed by `git` in this context directory
518
+ #
519
+ # source://spoom//lib/spoom/context/git.rb#43
520
+ sig { params(command: ::String).returns(::Spoom::ExecResult) }
521
+ def git(command); end
522
+
523
+ # Run `git checkout` in this context directory
524
+ #
525
+ # source://spoom//lib/spoom/context/git.rb#62
526
+ sig { params(ref: ::String).returns(::Spoom::ExecResult) }
527
+ def git_checkout!(ref: T.unsafe(nil)); end
528
+
529
+ # Run `git checkout -b <branch-name> <ref>` in this context directory
530
+ #
531
+ # source://spoom//lib/spoom/context/git.rb#68
532
+ sig { params(branch_name: ::String, ref: T.nilable(::String)).returns(::Spoom::ExecResult) }
533
+ def git_checkout_new_branch!(branch_name, ref: T.unsafe(nil)); end
534
+
535
+ # Run `git add . && git commit` in this context directory
536
+ #
537
+ # source://spoom//lib/spoom/context/git.rb#78
538
+ sig { params(message: ::String, time: ::Time, allow_empty: T::Boolean).returns(::Spoom::ExecResult) }
539
+ def git_commit!(message: T.unsafe(nil), time: T.unsafe(nil), allow_empty: T.unsafe(nil)); end
540
+
541
+ # Get the current git branch in this context directory
542
+ #
543
+ # source://spoom//lib/spoom/context/git.rb#89
544
+ sig { returns(T.nilable(::String)) }
545
+ def git_current_branch; end
546
+
547
+ # Run `git diff` in this context directory
548
+ #
549
+ # source://spoom//lib/spoom/context/git.rb#98
550
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
551
+ def git_diff(*arg); end
552
+
553
+ # Run `git init` in this context directory
554
+ #
555
+ # Warning: passing a branch will run `git init -b <branch>` which is only available in git 2.28+.
556
+ # In older versions, use `git_init!` followed by `git("checkout -b <branch>")`.
557
+ #
558
+ # source://spoom//lib/spoom/context/git.rb#52
559
+ sig { params(branch: T.nilable(::String)).returns(::Spoom::ExecResult) }
560
+ def git_init!(branch: T.unsafe(nil)); end
561
+
562
+ # Get the last commit in the currently checked out branch
563
+ #
564
+ # source://spoom//lib/spoom/context/git.rb#104
565
+ sig { params(short_sha: T::Boolean).returns(T.nilable(::Spoom::Git::Commit)) }
566
+ def git_last_commit(short_sha: T.unsafe(nil)); end
567
+
568
+ # source://spoom//lib/spoom/context/git.rb#115
569
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
570
+ def git_log(*arg); end
571
+
572
+ # Run `git push <remote> <ref>` in this context directory
573
+ #
574
+ # source://spoom//lib/spoom/context/git.rb#121
575
+ sig { params(remote: ::String, ref: ::String, force: T::Boolean).returns(::Spoom::ExecResult) }
576
+ def git_push!(remote, ref, force: T.unsafe(nil)); end
577
+
578
+ # source://spoom//lib/spoom/context/git.rb#126
579
+ sig { params(arg: ::String).returns(::Spoom::ExecResult) }
580
+ def git_show(*arg); end
581
+
582
+ # Is there uncommited changes in this context directory?
583
+ #
584
+ # source://spoom//lib/spoom/context/git.rb#132
585
+ sig { params(path: ::String).returns(T::Boolean) }
586
+ def git_workdir_clean?(path: T.unsafe(nil)); end
587
+ end
588
+
589
+ # Sorbet features for a context
590
+ #
591
+ # source://spoom//lib/spoom/context/sorbet.rb#7
592
+ module Spoom::Context::Sorbet
593
+ requires_ancestor { Spoom::Context }
594
+
595
+ # Does this context has a `sorbet/config` file?
596
+ #
597
+ # source://spoom//lib/spoom/context/sorbet.rb#119
598
+ sig { returns(T::Boolean) }
599
+ def has_sorbet_config?; end
600
+
601
+ # Read the strictness sigil from the file at `relative_path` (returns `nil` if no sigil)
602
+ #
603
+ # source://spoom//lib/spoom/context/sorbet.rb#142
604
+ sig { params(relative_path: ::String).returns(T.nilable(::String)) }
605
+ def read_file_strictness(relative_path); end
606
+
607
+ # Read the contents of `sorbet/config` in this context directory
608
+ #
609
+ # source://spoom//lib/spoom/context/sorbet.rb#130
610
+ sig { returns(::String) }
611
+ def read_sorbet_config; end
612
+
613
+ # source://spoom//lib/spoom/context/sorbet.rb#124
614
+ sig { returns(::Spoom::Sorbet::Config) }
615
+ def sorbet_config; end
616
+
617
+ # Get the commit introducing the `sorbet/config` file
618
+ #
619
+ # source://spoom//lib/spoom/context/sorbet.rb#148
620
+ sig { returns(T.nilable(::Spoom::Git::Commit)) }
621
+ def sorbet_intro_commit; end
622
+
623
+ # Get the commit removing the `sorbet/config` file
624
+ #
625
+ # source://spoom//lib/spoom/context/sorbet.rb#160
626
+ sig { returns(T.nilable(::Spoom::Git::Commit)) }
627
+ def sorbet_removal_commit; end
628
+
629
+ # Run `bundle exec srb` in this context directory
630
+ #
631
+ # source://spoom//lib/spoom/context/sorbet.rb#15
632
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
633
+ def srb(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
634
+
635
+ # List all files typechecked by Sorbet from its `config`
636
+ #
637
+ # source://spoom//lib/spoom/context/sorbet.rb#65
638
+ sig { params(with_config: T.nilable(::Spoom::Sorbet::Config), include_rbis: T::Boolean).returns(T::Array[::String]) }
639
+ def srb_files(with_config: T.unsafe(nil), include_rbis: T.unsafe(nil)); end
640
+
641
+ # List all files typechecked by Sorbet from its `config` that matches `strictness`
642
+ #
643
+ # source://spoom//lib/spoom/context/sorbet.rb#104
644
+ sig do
645
+ params(
646
+ strictness: ::String,
647
+ with_config: T.nilable(::Spoom::Sorbet::Config),
648
+ include_rbis: T::Boolean
649
+ ).returns(T::Array[::String])
650
+ end
651
+ def srb_files_with_strictness(strictness, with_config: T.unsafe(nil), include_rbis: T.unsafe(nil)); end
652
+
653
+ # source://spoom//lib/spoom/context/sorbet.rb#45
654
+ sig do
655
+ params(
656
+ arg: ::String,
657
+ sorbet_bin: T.nilable(::String),
658
+ capture_err: T::Boolean
659
+ ).returns(T.nilable(T::Hash[::String, ::Integer]))
660
+ end
661
+ def srb_metrics(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
662
+
663
+ # source://spoom//lib/spoom/context/sorbet.rb#33
664
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(::Spoom::ExecResult) }
665
+ def srb_tc(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
666
+
667
+ # source://spoom//lib/spoom/context/sorbet.rb#110
668
+ sig { params(arg: ::String, sorbet_bin: T.nilable(::String), capture_err: T::Boolean).returns(T.nilable(::String)) }
669
+ def srb_version(*arg, sorbet_bin: T.unsafe(nil), capture_err: T.unsafe(nil)); end
670
+
671
+ # Set the `contents` of `sorbet/config` in this context directory
672
+ #
673
+ # source://spoom//lib/spoom/context/sorbet.rb#136
674
+ sig { params(contents: ::String, append: T::Boolean).void }
675
+ def write_sorbet_config!(contents, append: T.unsafe(nil)); end
676
+ end
677
+
678
+ # source://spoom//lib/spoom/coverage/snapshot.rb#5
679
+ module Spoom::Coverage
680
+ class << self
681
+ # source://spoom//lib/spoom/coverage.rb#103
682
+ sig { params(context: ::Spoom::Context).returns(::Spoom::FileTree) }
683
+ def file_tree(context); end
684
+
685
+ # source://spoom//lib/spoom/coverage.rb#83
686
+ sig do
687
+ params(
688
+ context: ::Spoom::Context,
689
+ snapshots: T::Array[::Spoom::Coverage::Snapshot],
690
+ palette: ::Spoom::Coverage::D3::ColorPalette
691
+ ).returns(::Spoom::Coverage::Report)
692
+ end
693
+ def report(context, snapshots, palette:); end
694
+
695
+ # source://spoom//lib/spoom/coverage.rb#16
696
+ sig do
697
+ params(
698
+ context: ::Spoom::Context,
699
+ rbi: T::Boolean,
700
+ sorbet_bin: T.nilable(::String)
701
+ ).returns(::Spoom::Coverage::Snapshot)
702
+ end
703
+ def snapshot(context, rbi: T.unsafe(nil), sorbet_bin: T.unsafe(nil)); end
704
+ end
705
+ end
706
+
707
+ # source://spoom//lib/spoom/coverage/report.rb#88
708
+ module Spoom::Coverage::Cards; end
709
+
710
+ # source://spoom//lib/spoom/coverage/report.rb#89
711
+ class Spoom::Coverage::Cards::Card < ::Spoom::Coverage::Template
712
+ # source://spoom//lib/spoom/coverage/report.rb#98
713
+ sig { params(template: ::String, title: T.nilable(::String), body: T.nilable(::String)).void }
714
+ def initialize(template: T.unsafe(nil), title: T.unsafe(nil), body: T.unsafe(nil)); end
715
+
716
+ # @return [String, nil]
717
+ #
718
+ # source://spoom//lib/spoom/coverage/report.rb#95
719
+ def body; end
720
+
721
+ # source://spoom//lib/spoom/coverage/report.rb#95
722
+ sig { returns(T.nilable(::String)) }
723
+ def title; end
724
+ end
725
+
726
+ # source://spoom//lib/spoom/coverage/report.rb#92
727
+ Spoom::Coverage::Cards::Card::TEMPLATE = T.let(T.unsafe(nil), String)
728
+
729
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
730
+ #
731
+ # source://spoom//lib/spoom/coverage/report.rb#105
732
+ class Spoom::Coverage::Cards::Erb < ::Spoom::Coverage::Cards::Card
733
+ abstract!
734
+
735
+ # source://spoom//lib/spoom/coverage/report.rb#112
736
+ sig { void }
737
+ def initialize; end
738
+
739
+ # @abstract
740
+ #
741
+ # source://spoom//lib/spoom/coverage/report.rb#120
742
+ sig { abstract.returns(::String) }
743
+ def erb; end
744
+
745
+ # source://spoom//lib/spoom/coverage/report.rb#115
746
+ sig { override.returns(::String) }
747
+ def html; end
748
+ end
749
+
750
+ # source://spoom//lib/spoom/coverage/report.rb#153
751
+ class Spoom::Coverage::Cards::Map < ::Spoom::Coverage::Cards::Card
752
+ # source://spoom//lib/spoom/coverage/report.rb#164
753
+ sig do
754
+ params(
755
+ file_tree: ::Spoom::FileTree,
756
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
757
+ nodes_strictness_scores: T::Hash[::Spoom::FileTree::Node, ::Float],
758
+ title: ::String
759
+ ).void
760
+ end
761
+ def initialize(file_tree:, nodes_strictnesses:, nodes_strictness_scores:, title: T.unsafe(nil)); end
762
+ end
763
+
764
+ # source://spoom//lib/spoom/coverage/report.rb#123
765
+ class Spoom::Coverage::Cards::Snapshot < ::Spoom::Coverage::Cards::Card
766
+ # source://spoom//lib/spoom/coverage/report.rb#132
767
+ sig { params(snapshot: ::Spoom::Coverage::Snapshot, title: ::String).void }
768
+ def initialize(snapshot:, title: T.unsafe(nil)); end
769
+
770
+ # source://spoom//lib/spoom/coverage/report.rb#143
771
+ sig { returns(::Spoom::Coverage::D3::Pie::Calls) }
772
+ def pie_calls; end
773
+
774
+ # source://spoom//lib/spoom/coverage/report.rb#138
775
+ sig { returns(::Spoom::Coverage::D3::Pie::Sigils) }
776
+ def pie_sigils; end
777
+
778
+ # source://spoom//lib/spoom/coverage/report.rb#148
779
+ sig { returns(::Spoom::Coverage::D3::Pie::Sigs) }
780
+ def pie_sigs; end
781
+
782
+ # source://spoom//lib/spoom/coverage/report.rb#129
783
+ sig { returns(::Spoom::Coverage::Snapshot) }
784
+ def snapshot; end
785
+ end
786
+
787
+ # source://spoom//lib/spoom/coverage/report.rb#126
788
+ Spoom::Coverage::Cards::Snapshot::TEMPLATE = T.let(T.unsafe(nil), String)
789
+
790
+ # source://spoom//lib/spoom/coverage/report.rb#240
791
+ class Spoom::Coverage::Cards::SorbetIntro < ::Spoom::Coverage::Cards::Erb
792
+ # source://spoom//lib/spoom/coverage/report.rb#244
793
+ sig { params(sorbet_intro_commit: T.nilable(::String), sorbet_intro_date: T.nilable(::Time)).void }
794
+ def initialize(sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
795
+
796
+ # source://spoom//lib/spoom/coverage/report.rb#250
797
+ sig { override.returns(::String) }
798
+ def erb; end
799
+ end
800
+
801
+ # source://spoom//lib/spoom/coverage/report.rb#177
802
+ class Spoom::Coverage::Cards::Timeline < ::Spoom::Coverage::Cards::Card
803
+ # source://spoom//lib/spoom/coverage/report.rb#181
804
+ sig { params(title: ::String, timeline: ::Spoom::Coverage::D3::Timeline).void }
805
+ def initialize(title:, timeline:); end
806
+ end
807
+
808
+ # source://spoom//lib/spoom/coverage/report.rb#194
809
+ class Spoom::Coverage::Cards::Timeline::Calls < ::Spoom::Coverage::Cards::Timeline
810
+ # source://spoom//lib/spoom/coverage/report.rb#198
811
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
812
+ def initialize(snapshots:, title: T.unsafe(nil)); end
813
+ end
814
+
815
+ # source://spoom//lib/spoom/coverage/report.rb#212
816
+ class Spoom::Coverage::Cards::Timeline::RBIs < ::Spoom::Coverage::Cards::Timeline
817
+ # source://spoom//lib/spoom/coverage/report.rb#216
818
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
819
+ def initialize(snapshots:, title: T.unsafe(nil)); end
820
+ end
821
+
822
+ # source://spoom//lib/spoom/coverage/report.rb#230
823
+ class Spoom::Coverage::Cards::Timeline::Runtimes < ::Spoom::Coverage::Cards::Timeline
824
+ # source://spoom//lib/spoom/coverage/report.rb#234
825
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
826
+ def initialize(snapshots:, title: T.unsafe(nil)); end
827
+ end
828
+
829
+ # source://spoom//lib/spoom/coverage/report.rb#185
830
+ class Spoom::Coverage::Cards::Timeline::Sigils < ::Spoom::Coverage::Cards::Timeline
831
+ # source://spoom//lib/spoom/coverage/report.rb#189
832
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
833
+ def initialize(snapshots:, title: T.unsafe(nil)); end
834
+ end
835
+
836
+ # source://spoom//lib/spoom/coverage/report.rb#203
837
+ class Spoom::Coverage::Cards::Timeline::Sigs < ::Spoom::Coverage::Cards::Timeline
838
+ # source://spoom//lib/spoom/coverage/report.rb#207
839
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
840
+ def initialize(snapshots:, title: T.unsafe(nil)); end
841
+ end
842
+
843
+ # source://spoom//lib/spoom/coverage/report.rb#221
844
+ class Spoom::Coverage::Cards::Timeline::Versions < ::Spoom::Coverage::Cards::Timeline
845
+ # source://spoom//lib/spoom/coverage/report.rb#225
846
+ sig { params(snapshots: T::Array[::Spoom::Coverage::Snapshot], title: ::String).void }
847
+ def initialize(snapshots:, title: T.unsafe(nil)); end
848
+ end
849
+
850
+ # source://spoom//lib/spoom/coverage/d3/base.rb#6
851
+ module Spoom::Coverage::D3
852
+ class << self
853
+ # source://spoom//lib/spoom/coverage/d3.rb#61
854
+ sig { params(palette: ::Spoom::Coverage::D3::ColorPalette).returns(::String) }
855
+ def header_script(palette); end
856
+
857
+ # source://spoom//lib/spoom/coverage/d3.rb#21
858
+ sig { returns(::String) }
859
+ def header_style; end
860
+ end
861
+ end
862
+
863
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
864
+ #
865
+ # source://spoom//lib/spoom/coverage/d3/base.rb#7
866
+ class Spoom::Coverage::D3::Base
867
+ abstract!
868
+
869
+ # source://spoom//lib/spoom/coverage/d3/base.rb#17
870
+ sig { params(id: ::String, data: T.untyped).void }
871
+ def initialize(id, data); end
872
+
873
+ # source://spoom//lib/spoom/coverage/d3/base.rb#37
874
+ sig { returns(::String) }
875
+ def html; end
876
+
877
+ # source://spoom//lib/spoom/coverage/d3/base.rb#14
878
+ sig { returns(::String) }
879
+ def id; end
880
+
881
+ # @abstract
882
+ #
883
+ # source://spoom//lib/spoom/coverage/d3/base.rb#50
884
+ sig { abstract.returns(::String) }
885
+ def script; end
886
+
887
+ # source://spoom//lib/spoom/coverage/d3/base.rb#45
888
+ sig { returns(::String) }
889
+ def tooltip; end
890
+
891
+ class << self
892
+ # source://spoom//lib/spoom/coverage/d3/base.rb#31
893
+ sig { returns(::String) }
894
+ def header_script; end
895
+
896
+ # source://spoom//lib/spoom/coverage/d3/base.rb#26
897
+ sig { returns(::String) }
898
+ def header_style; end
899
+ end
900
+ end
901
+
902
+ # source://spoom//lib/spoom/coverage/d3.rb#12
903
+ Spoom::Coverage::D3::COLOR_FALSE = T.let(T.unsafe(nil), String)
904
+
905
+ # source://spoom//lib/spoom/coverage/d3.rb#11
906
+ Spoom::Coverage::D3::COLOR_IGNORE = T.let(T.unsafe(nil), String)
907
+
908
+ # source://spoom//lib/spoom/coverage/d3.rb#14
909
+ Spoom::Coverage::D3::COLOR_STRICT = T.let(T.unsafe(nil), String)
910
+
911
+ # source://spoom//lib/spoom/coverage/d3.rb#15
912
+ Spoom::Coverage::D3::COLOR_STRONG = T.let(T.unsafe(nil), String)
913
+
914
+ # source://spoom//lib/spoom/coverage/d3.rb#13
915
+ Spoom::Coverage::D3::COLOR_TRUE = T.let(T.unsafe(nil), String)
916
+
917
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#9
918
+ class Spoom::Coverage::D3::CircleMap < ::Spoom::Coverage::D3::Base
919
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#59
920
+ sig { override.returns(::String) }
921
+ def script; end
922
+
923
+ class << self
924
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#40
925
+ sig { returns(::String) }
926
+ def header_script; end
927
+
928
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#14
929
+ sig { returns(::String) }
930
+ def header_style; end
931
+ end
932
+ end
933
+
934
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#148
935
+ class Spoom::Coverage::D3::CircleMap::Sigils < ::Spoom::Coverage::D3::CircleMap
936
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#159
937
+ sig do
938
+ params(
939
+ id: ::String,
940
+ file_tree: ::Spoom::FileTree,
941
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
942
+ nodes_scores: T::Hash[::Spoom::FileTree::Node, ::Float]
943
+ ).void
944
+ end
945
+ def initialize(id, file_tree, nodes_strictnesses, nodes_scores); end
946
+
947
+ # source://spoom//lib/spoom/coverage/d3/circle_map.rb#166
948
+ sig { params(node: ::Spoom::FileTree::Node).returns(T::Hash[::Symbol, T.untyped]) }
949
+ def tree_node_to_json(node); end
950
+ end
951
+
952
+ # source://spoom//lib/spoom/coverage/d3.rb#103
953
+ class Spoom::Coverage::D3::ColorPalette < ::T::Struct
954
+ prop :ignore, ::String
955
+ prop :false, ::String
956
+ prop :true, ::String
957
+ prop :strict, ::String
958
+ prop :strong, ::String
959
+
960
+ class << self
961
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
962
+ def inherited(s); end
963
+ end
964
+ end
965
+
966
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
967
+ #
968
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#9
969
+ class Spoom::Coverage::D3::Pie < ::Spoom::Coverage::D3::Base
970
+ abstract!
971
+
972
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#16
973
+ sig { params(id: ::String, title: ::String, data: T.untyped).void }
974
+ def initialize(id, title, data); end
975
+
976
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#56
977
+ sig { override.returns(::String) }
978
+ def script; end
979
+
980
+ class << self
981
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#43
982
+ sig { returns(::String) }
983
+ def header_script; end
984
+
985
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#25
986
+ sig { returns(::String) }
987
+ def header_style; end
988
+ end
989
+ end
990
+
991
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#141
992
+ class Spoom::Coverage::D3::Pie::Calls < ::Spoom::Coverage::D3::Pie
993
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#145
994
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
995
+ def initialize(id, title, snapshot); end
996
+
997
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#150
998
+ sig { override.returns(::String) }
999
+ def tooltip; end
1000
+ end
1001
+
1002
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#123
1003
+ class Spoom::Coverage::D3::Pie::Sigils < ::Spoom::Coverage::D3::Pie
1004
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#127
1005
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
1006
+ def initialize(id, title, snapshot); end
1007
+
1008
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#132
1009
+ sig { override.returns(::String) }
1010
+ def tooltip; end
1011
+ end
1012
+
1013
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#159
1014
+ class Spoom::Coverage::D3::Pie::Sigs < ::Spoom::Coverage::D3::Pie
1015
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#163
1016
+ sig { params(id: ::String, title: ::String, snapshot: ::Spoom::Coverage::Snapshot).void }
1017
+ def initialize(id, title, snapshot); end
1018
+
1019
+ # source://spoom//lib/spoom/coverage/d3/pie.rb#172
1020
+ sig { override.returns(::String) }
1021
+ def tooltip; end
1022
+ end
1023
+
1024
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1025
+ #
1026
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#9
1027
+ class Spoom::Coverage::D3::Timeline < ::Spoom::Coverage::D3::Base
1028
+ abstract!
1029
+
1030
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#16
1031
+ sig { params(id: ::String, data: T.untyped, keys: T::Array[::String]).void }
1032
+ def initialize(id, data, keys); end
1033
+
1034
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#187
1035
+ sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
1036
+ def area(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
1037
+
1038
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#203
1039
+ sig { params(y: ::String, color: ::String, curve: ::String).returns(::String) }
1040
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
1041
+
1042
+ # @abstract
1043
+ #
1044
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#126
1045
+ sig { abstract.returns(::String) }
1046
+ def plot; end
1047
+
1048
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#217
1049
+ sig { params(y: ::String).returns(::String) }
1050
+ def points(y:); end
1051
+
1052
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#101
1053
+ sig { override.returns(::String) }
1054
+ def script; end
1055
+
1056
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#129
1057
+ sig { returns(::String) }
1058
+ def x_scale; end
1059
+
1060
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#145
1061
+ sig { returns(::String) }
1062
+ def x_ticks; end
1063
+
1064
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#158
1065
+ sig { params(min: ::String, max: ::String, ticks: ::String).returns(::String) }
1066
+ def y_scale(min:, max:, ticks:); end
1067
+
1068
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#174
1069
+ sig { params(ticks: ::String, format: ::String, padding: ::Integer).returns(::String) }
1070
+ def y_ticks(ticks:, format:, padding:); end
1071
+
1072
+ class << self
1073
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#79
1074
+ sig { returns(::String) }
1075
+ def header_script; end
1076
+
1077
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#25
1078
+ sig { returns(::String) }
1079
+ def header_style; end
1080
+ end
1081
+ end
1082
+
1083
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#448
1084
+ class Spoom::Coverage::D3::Timeline::Calls < ::Spoom::Coverage::D3::Timeline::Stacked
1085
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#452
1086
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1087
+ def initialize(id, snapshots); end
1088
+
1089
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#466
1090
+ sig { override.returns(::String) }
1091
+ def tooltip; end
1092
+ end
1093
+
1094
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#505
1095
+ class Spoom::Coverage::D3::Timeline::RBIs < ::Spoom::Coverage::D3::Timeline::Stacked
1096
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#509
1097
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1098
+ def initialize(id, snapshots); end
1099
+
1100
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#577
1101
+ sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
1102
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
1103
+
1104
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#617
1105
+ sig { override.returns(::String) }
1106
+ def plot; end
1107
+
1108
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#537
1109
+ sig { override.returns(::String) }
1110
+ def script; end
1111
+
1112
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#523
1113
+ sig { override.returns(::String) }
1114
+ def tooltip; end
1115
+ end
1116
+
1117
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#282
1118
+ class Spoom::Coverage::D3::Timeline::Runtimes < ::Spoom::Coverage::D3::Timeline
1119
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#286
1120
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1121
+ def initialize(id, snapshots); end
1122
+
1123
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#311
1124
+ sig { override.returns(::String) }
1125
+ def plot; end
1126
+
1127
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#298
1128
+ sig { override.returns(::String) }
1129
+ def tooltip; end
1130
+ end
1131
+
1132
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#421
1133
+ class Spoom::Coverage::D3::Timeline::Sigils < ::Spoom::Coverage::D3::Timeline::Stacked
1134
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#425
1135
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1136
+ def initialize(id, snapshots); end
1137
+
1138
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#439
1139
+ sig { override.returns(::String) }
1140
+ def tooltip; end
1141
+ end
1142
+
1143
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#475
1144
+ class Spoom::Coverage::D3::Timeline::Sigs < ::Spoom::Coverage::D3::Timeline::Stacked
1145
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#479
1146
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1147
+ def initialize(id, snapshots); end
1148
+
1149
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#496
1150
+ sig { override.returns(::String) }
1151
+ def tooltip; end
1152
+ end
1153
+
1154
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1155
+ #
1156
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#329
1157
+ class Spoom::Coverage::D3::Timeline::Stacked < ::Spoom::Coverage::D3::Timeline
1158
+ abstract!
1159
+
1160
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#388
1161
+ sig { override.params(y: ::String, color: ::String, curve: ::String).returns(::String) }
1162
+ def line(y:, color: T.unsafe(nil), curve: T.unsafe(nil)); end
1163
+
1164
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#377
1165
+ sig { override.returns(::String) }
1166
+ def plot; end
1167
+
1168
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#336
1169
+ sig { override.returns(::String) }
1170
+ def script; end
1171
+ end
1172
+
1173
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#232
1174
+ class Spoom::Coverage::D3::Timeline::Versions < ::Spoom::Coverage::D3::Timeline
1175
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#236
1176
+ sig { params(id: ::String, snapshots: T::Array[::Spoom::Coverage::Snapshot]).void }
1177
+ def initialize(id, snapshots); end
1178
+
1179
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#263
1180
+ sig { override.returns(::String) }
1181
+ def plot; end
1182
+
1183
+ # source://spoom//lib/spoom/coverage/d3/timeline.rb#249
1184
+ sig { override.returns(::String) }
1185
+ def tooltip; end
1186
+ end
1187
+
1188
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1189
+ #
1190
+ # source://spoom//lib/spoom/coverage/report.rb#38
1191
+ class Spoom::Coverage::Page < ::Spoom::Coverage::Template
1192
+ abstract!
1193
+
1194
+ # source://spoom//lib/spoom/coverage/report.rb#53
1195
+ sig { params(title: ::String, palette: ::Spoom::Coverage::D3::ColorPalette, template: ::String).void }
1196
+ def initialize(title:, palette:, template: T.unsafe(nil)); end
1197
+
1198
+ # source://spoom//lib/spoom/coverage/report.rb#75
1199
+ sig { returns(::String) }
1200
+ def body_html; end
1201
+
1202
+ # @abstract
1203
+ #
1204
+ # source://spoom//lib/spoom/coverage/report.rb#80
1205
+ sig { abstract.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
1206
+ def cards; end
1207
+
1208
+ # source://spoom//lib/spoom/coverage/report.rb#83
1209
+ sig { returns(::String) }
1210
+ def footer_html; end
1211
+
1212
+ # source://spoom//lib/spoom/coverage/report.rb#70
1213
+ sig { returns(::String) }
1214
+ def header_html; end
1215
+
1216
+ # source://spoom//lib/spoom/coverage/report.rb#65
1217
+ sig { returns(::String) }
1218
+ def header_script; end
1219
+
1220
+ # source://spoom//lib/spoom/coverage/report.rb#60
1221
+ sig { returns(::String) }
1222
+ def header_style; end
1223
+
1224
+ # source://spoom//lib/spoom/coverage/report.rb#50
1225
+ sig { returns(::Spoom::Coverage::D3::ColorPalette) }
1226
+ def palette; end
1227
+
1228
+ # source://spoom//lib/spoom/coverage/report.rb#47
1229
+ sig { returns(::String) }
1230
+ def title; end
1231
+ end
1232
+
1233
+ # source://spoom//lib/spoom/coverage/report.rb#44
1234
+ Spoom::Coverage::Page::TEMPLATE = T.let(T.unsafe(nil), String)
1235
+
1236
+ # source://spoom//lib/spoom/coverage/report.rb#261
1237
+ class Spoom::Coverage::Report < ::Spoom::Coverage::Page
1238
+ # source://spoom//lib/spoom/coverage/report.rb#276
1239
+ sig do
1240
+ params(
1241
+ project_name: ::String,
1242
+ palette: ::Spoom::Coverage::D3::ColorPalette,
1243
+ snapshots: T::Array[::Spoom::Coverage::Snapshot],
1244
+ file_tree: ::Spoom::FileTree,
1245
+ nodes_strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
1246
+ nodes_strictness_scores: T::Hash[::Spoom::FileTree::Node, ::Float],
1247
+ sorbet_intro_commit: T.nilable(::String),
1248
+ sorbet_intro_date: T.nilable(::Time)
1249
+ ).void
1250
+ end
1251
+ def initialize(project_name:, palette:, snapshots:, file_tree:, nodes_strictnesses:, nodes_strictness_scores:, sorbet_intro_commit: T.unsafe(nil), sorbet_intro_date: T.unsafe(nil)); end
1252
+
1253
+ # source://spoom//lib/spoom/coverage/report.rb#308
1254
+ sig { override.returns(T::Array[::Spoom::Coverage::Cards::Card]) }
1255
+ def cards; end
1256
+
1257
+ # source://spoom//lib/spoom/coverage/report.rb#297
1258
+ sig { override.returns(::String) }
1259
+ def header_html; end
1260
+ end
1261
+
1262
+ # source://spoom//lib/spoom/coverage/snapshot.rb#6
1263
+ class Spoom::Coverage::Snapshot < ::T::Struct
1264
+ prop :timestamp, ::Integer, default: T.unsafe(nil)
1265
+ prop :version_static, T.nilable(::String), default: T.unsafe(nil)
1266
+ prop :version_runtime, T.nilable(::String), default: T.unsafe(nil)
1267
+ prop :duration, ::Integer, default: T.unsafe(nil)
1268
+ prop :commit_sha, T.nilable(::String), default: T.unsafe(nil)
1269
+ prop :commit_timestamp, T.nilable(::Integer), default: T.unsafe(nil)
1270
+ prop :files, ::Integer, default: T.unsafe(nil)
1271
+ prop :rbi_files, ::Integer, default: T.unsafe(nil)
1272
+ prop :modules, ::Integer, default: T.unsafe(nil)
1273
+ prop :classes, ::Integer, default: T.unsafe(nil)
1274
+ prop :singleton_classes, ::Integer, default: T.unsafe(nil)
1275
+ prop :methods_without_sig, ::Integer, default: T.unsafe(nil)
1276
+ prop :methods_with_sig, ::Integer, default: T.unsafe(nil)
1277
+ prop :calls_untyped, ::Integer, default: T.unsafe(nil)
1278
+ prop :calls_typed, ::Integer, default: T.unsafe(nil)
1279
+ prop :sigils, T::Hash[::String, ::Integer], default: T.unsafe(nil)
1280
+ prop :methods_with_sig_excluding_rbis, ::Integer, default: T.unsafe(nil)
1281
+ prop :methods_without_sig_excluding_rbis, ::Integer, default: T.unsafe(nil)
1282
+ prop :sigils_excluding_rbis, T::Hash[::String, ::Integer], default: T.unsafe(nil)
1283
+
1284
+ # source://spoom//lib/spoom/coverage/snapshot.rb#33
1285
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
1286
+ def print(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
1287
+
1288
+ # source://spoom//lib/spoom/coverage/snapshot.rb#39
1289
+ sig { params(arg: T.untyped).returns(::String) }
1290
+ def to_json(*arg); end
1291
+
1292
+ class << self
1293
+ # source://spoom//lib/spoom/coverage/snapshot.rb#47
1294
+ sig { params(json: ::String).returns(::Spoom::Coverage::Snapshot) }
1295
+ def from_json(json); end
1296
+
1297
+ # source://spoom//lib/spoom/coverage/snapshot.rb#52
1298
+ sig { params(obj: T::Hash[::String, T.untyped]).returns(::Spoom::Coverage::Snapshot) }
1299
+ def from_obj(obj); end
1300
+
1301
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
1302
+ def inherited(s); end
1303
+ end
1304
+ end
1305
+
1306
+ # The strictness name as found in the Sorbet metrics file
1307
+ #
1308
+ # source://spoom//lib/spoom/coverage/snapshot.rb#30
1309
+ Spoom::Coverage::Snapshot::STRICTNESSES = T.let(T.unsafe(nil), Array)
1310
+
1311
+ # source://spoom//lib/spoom/coverage/snapshot.rb#95
1312
+ class Spoom::Coverage::SnapshotPrinter < ::Spoom::Printer
1313
+ # source://spoom//lib/spoom/coverage/snapshot.rb#99
1314
+ sig { params(snapshot: ::Spoom::Coverage::Snapshot).void }
1315
+ def print_snapshot(snapshot); end
1316
+
1317
+ private
1318
+
1319
+ # source://spoom//lib/spoom/coverage/snapshot.rb#158
1320
+ sig { params(value: T.nilable(::Integer), total: T.nilable(::Integer)).returns(::String) }
1321
+ def percent(value, total); end
1322
+
1323
+ # source://spoom//lib/spoom/coverage/snapshot.rb#147
1324
+ sig { params(hash: T::Hash[::String, ::Integer], total: ::Integer).void }
1325
+ def print_map(hash, total); end
1326
+ end
1327
+
1328
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1329
+ #
1330
+ # source://spoom//lib/spoom/coverage/report.rb#10
1331
+ class Spoom::Coverage::Template
1332
+ abstract!
1333
+
1334
+ # Create a new template from an Erb file path
1335
+ #
1336
+ # source://spoom//lib/spoom/coverage/report.rb#18
1337
+ sig { params(template: ::String).void }
1338
+ def initialize(template:); end
1339
+
1340
+ # source://spoom//lib/spoom/coverage/report.rb#23
1341
+ sig { returns(::String) }
1342
+ def erb; end
1343
+
1344
+ # source://spoom//lib/spoom/coverage/report.rb#33
1345
+ sig { returns(::Binding) }
1346
+ def get_binding; end
1347
+
1348
+ # source://spoom//lib/spoom/coverage/report.rb#28
1349
+ sig { returns(::String) }
1350
+ def html; end
1351
+ end
1352
+
1353
+ # source://spoom//lib/spoom/deadcode/erb.rb#27
1354
+ module Spoom::Deadcode
1355
+ class << self
1356
+ # source://spoom//lib/spoom/deadcode.rb#50
1357
+ sig do
1358
+ params(
1359
+ index: ::Spoom::Deadcode::Index,
1360
+ erb: ::String,
1361
+ file: ::String,
1362
+ plugins: T::Array[::Spoom::Deadcode::Plugins::Base]
1363
+ ).void
1364
+ end
1365
+ def index_erb(index, erb, file:, plugins: T.unsafe(nil)); end
1366
+
1367
+ # source://spoom//lib/spoom/deadcode.rb#39
1368
+ sig do
1369
+ params(
1370
+ index: ::Spoom::Deadcode::Index,
1371
+ ruby: ::String,
1372
+ file: ::String,
1373
+ plugins: T::Array[::Spoom::Deadcode::Plugins::Base]
1374
+ ).void
1375
+ end
1376
+ def index_ruby(index, ruby, file:, plugins: T.unsafe(nil)); end
1377
+ end
1378
+ end
1379
+
1380
+ # A definition is a class, module, method, constant, etc. being defined in the code
1381
+ #
1382
+ # source://spoom//lib/spoom/deadcode/definition.rb#7
1383
+ class Spoom::Deadcode::Definition < ::T::Struct
1384
+ const :kind, ::Spoom::Deadcode::Definition::Kind
1385
+ const :name, ::String
1386
+ const :full_name, ::String
1387
+ const :location, ::Spoom::Deadcode::Location
1388
+ const :status, ::Spoom::Deadcode::Definition::Status, default: T.unsafe(nil)
1389
+
1390
+ # source://spoom//lib/spoom/deadcode/definition.rb#78
1391
+ sig { void }
1392
+ def alive!; end
1393
+
1394
+ # Status
1395
+ #
1396
+ # source://spoom//lib/spoom/deadcode/definition.rb#73
1397
+ sig { returns(T::Boolean) }
1398
+ def alive?; end
1399
+
1400
+ # Kind
1401
+ #
1402
+ # source://spoom//lib/spoom/deadcode/definition.rb#41
1403
+ sig { returns(T::Boolean) }
1404
+ def attr_reader?; end
1405
+
1406
+ # source://spoom//lib/spoom/deadcode/definition.rb#46
1407
+ sig { returns(T::Boolean) }
1408
+ def attr_writer?; end
1409
+
1410
+ # source://spoom//lib/spoom/deadcode/definition.rb#51
1411
+ sig { returns(T::Boolean) }
1412
+ def class?; end
1413
+
1414
+ # source://spoom//lib/spoom/deadcode/definition.rb#56
1415
+ sig { returns(T::Boolean) }
1416
+ def constant?; end
1417
+
1418
+ # source://spoom//lib/spoom/deadcode/definition.rb#83
1419
+ sig { returns(T::Boolean) }
1420
+ def dead?; end
1421
+
1422
+ # source://spoom//lib/spoom/deadcode/definition.rb#93
1423
+ sig { void }
1424
+ def ignored!; end
1425
+
1426
+ # source://spoom//lib/spoom/deadcode/definition.rb#88
1427
+ sig { returns(T::Boolean) }
1428
+ def ignored?; end
1429
+
1430
+ # source://spoom//lib/spoom/deadcode/definition.rb#61
1431
+ sig { returns(T::Boolean) }
1432
+ def method?; end
1433
+
1434
+ # source://spoom//lib/spoom/deadcode/definition.rb#66
1435
+ sig { returns(T::Boolean) }
1436
+ def module?; end
1437
+
1438
+ class << self
1439
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
1440
+ def inherited(s); end
1441
+ end
1442
+ end
1443
+
1444
+ # source://spoom//lib/spoom/deadcode/definition.rb#10
1445
+ class Spoom::Deadcode::Definition::Kind < ::T::Enum
1446
+ enums do
1447
+ AttrReader = new
1448
+ AttrWriter = new
1449
+ Class = new
1450
+ Constant = new
1451
+ Method = new
1452
+ Module = new
1453
+ end
1454
+ end
1455
+
1456
+ # source://spoom//lib/spoom/deadcode/definition.rb#21
1457
+ class Spoom::Deadcode::Definition::Status < ::T::Enum
1458
+ enums do
1459
+ ALIVE = new
1460
+ DEAD = new
1461
+ IGNORED = new
1462
+ end
1463
+ end
1464
+
1465
+ # Custom engine to handle ERB templates as used by Rails
1466
+ #
1467
+ # source://spoom//lib/spoom/deadcode/erb.rb#29
1468
+ class Spoom::Deadcode::ERB < ::Erubi::Engine
1469
+ # source://spoom//lib/spoom/deadcode/erb.rb#33
1470
+ sig { params(input: T.untyped, properties: T.untyped).void }
1471
+ def initialize(input, properties = T.unsafe(nil)); end
1472
+
1473
+ private
1474
+
1475
+ # source://spoom//lib/spoom/deadcode/erb.rb#83
1476
+ sig { params(code: T.untyped).void }
1477
+ def add_code(code); end
1478
+
1479
+ # source://spoom//lib/spoom/deadcode/erb.rb#66
1480
+ sig { params(indicator: T.untyped, code: T.untyped).void }
1481
+ def add_expression(indicator, code); end
1482
+
1483
+ # source://spoom//lib/spoom/deadcode/erb.rb#89
1484
+ sig { params(_: T.untyped).void }
1485
+ def add_postamble(_); end
1486
+
1487
+ # source://spoom//lib/spoom/deadcode/erb.rb#48
1488
+ sig { params(text: T.untyped).void }
1489
+ def add_text(text); end
1490
+
1491
+ # source://spoom//lib/spoom/deadcode/erb.rb#95
1492
+ sig { params(src: T.untyped).void }
1493
+ def flush_newline_if_pending(src); end
1494
+ end
1495
+
1496
+ # source://spoom//lib/spoom/deadcode/erb.rb#63
1497
+ Spoom::Deadcode::ERB::BLOCK_EXPR = T.let(T.unsafe(nil), Regexp)
1498
+
1499
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1500
+ #
1501
+ # source://spoom//lib/spoom/deadcode.rb#19
1502
+ class Spoom::Deadcode::Error < ::Spoom::Error
1503
+ abstract!
1504
+
1505
+ # source://spoom//lib/spoom/deadcode.rb#26
1506
+ sig { params(message: ::String, parent: ::Exception).void }
1507
+ def initialize(message, parent:); end
1508
+ end
1509
+
1510
+ # source://spoom//lib/spoom/deadcode/index.rb#6
1511
+ class Spoom::Deadcode::Index
1512
+ # source://spoom//lib/spoom/deadcode/index.rb#16
1513
+ sig { void }
1514
+ def initialize; end
1515
+
1516
+ # source://spoom//lib/spoom/deadcode/index.rb#51
1517
+ sig { returns(T::Array[::Spoom::Deadcode::Definition]) }
1518
+ def all_definitions; end
1519
+
1520
+ # source://spoom//lib/spoom/deadcode/index.rb#56
1521
+ sig { returns(T::Array[::Spoom::Deadcode::Reference]) }
1522
+ def all_references; end
1523
+
1524
+ # Indexing
1525
+ #
1526
+ # source://spoom//lib/spoom/deadcode/index.rb#24
1527
+ sig { params(definition: ::Spoom::Deadcode::Definition).void }
1528
+ def define(definition); end
1529
+
1530
+ # source://spoom//lib/spoom/deadcode/index.rb#10
1531
+ sig { returns(T::Hash[::String, T::Array[::Spoom::Deadcode::Definition]]) }
1532
+ def definitions; end
1533
+
1534
+ # Utils
1535
+ #
1536
+ # source://spoom//lib/spoom/deadcode/index.rb#46
1537
+ sig { params(name: ::String).returns(T::Array[::Spoom::Deadcode::Definition]) }
1538
+ def definitions_for_name(name); end
1539
+
1540
+ # Mark all definitions having a reference of the same name as `alive`
1541
+ #
1542
+ # To be called once all the files have been indexed and all the definitions and references discovered.
1543
+ #
1544
+ # source://spoom//lib/spoom/deadcode/index.rb#37
1545
+ sig { void }
1546
+ def finalize!; end
1547
+
1548
+ # source://spoom//lib/spoom/deadcode/index.rb#29
1549
+ sig { params(reference: ::Spoom::Deadcode::Reference).void }
1550
+ def reference(reference); end
1551
+
1552
+ # source://spoom//lib/spoom/deadcode/index.rb#13
1553
+ sig { returns(T::Hash[::String, T::Array[::Spoom::Deadcode::Reference]]) }
1554
+ def references; end
1555
+ end
1556
+
1557
+ # source://spoom//lib/spoom/deadcode/indexer.rb#6
1558
+ class Spoom::Deadcode::Indexer < ::SyntaxTree::Visitor
1559
+ # source://spoom//lib/spoom/deadcode/indexer.rb#16
1560
+ sig do
1561
+ params(
1562
+ path: ::String,
1563
+ source: ::String,
1564
+ index: ::Spoom::Deadcode::Index,
1565
+ plugins: T::Array[::Spoom::Deadcode::Plugins::Base]
1566
+ ).void
1567
+ end
1568
+ def initialize(path, source, index, plugins: T.unsafe(nil)); end
1569
+
1570
+ # source://spoom//lib/spoom/deadcode/indexer.rb#391
1571
+ sig do
1572
+ params(
1573
+ node: T.nilable(T.any(::SyntaxTree::ArgParen, ::SyntaxTree::Args, ::SyntaxTree::ArgsForward))
1574
+ ).returns(T::Array[::SyntaxTree::Node])
1575
+ end
1576
+ def call_args(node); end
1577
+
1578
+ # Definition indexing
1579
+ #
1580
+ # source://spoom//lib/spoom/deadcode/indexer.rb#281
1581
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1582
+ def define_attr_reader(name, full_name, node); end
1583
+
1584
+ # source://spoom//lib/spoom/deadcode/indexer.rb#293
1585
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1586
+ def define_attr_writer(name, full_name, node); end
1587
+
1588
+ # source://spoom//lib/spoom/deadcode/indexer.rb#305
1589
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1590
+ def define_class(name, full_name, node); end
1591
+
1592
+ # source://spoom//lib/spoom/deadcode/indexer.rb#317
1593
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1594
+ def define_constant(name, full_name, node); end
1595
+
1596
+ # source://spoom//lib/spoom/deadcode/indexer.rb#329
1597
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1598
+ def define_method(name, full_name, node); end
1599
+
1600
+ # source://spoom//lib/spoom/deadcode/indexer.rb#341
1601
+ sig { params(name: ::String, full_name: ::String, node: ::SyntaxTree::Node).void }
1602
+ def define_module(name, full_name, node); end
1603
+
1604
+ # @return [String]
1605
+ #
1606
+ # source://spoom//lib/spoom/deadcode/indexer.rb#10
1607
+ def file_name; end
1608
+
1609
+ # source://spoom//lib/spoom/deadcode/indexer.rb#13
1610
+ sig { returns(::Spoom::Deadcode::Index) }
1611
+ def index; end
1612
+
1613
+ # source://spoom//lib/spoom/deadcode/indexer.rb#377
1614
+ sig { params(node: ::SyntaxTree::Node).returns(::Spoom::Deadcode::Location) }
1615
+ def node_location(node); end
1616
+
1617
+ # Node utils
1618
+ #
1619
+ # source://spoom//lib/spoom/deadcode/indexer.rb#367
1620
+ sig { params(node: T.any(::Symbol, ::SyntaxTree::Node)).returns(::String) }
1621
+ def node_string(node); end
1622
+
1623
+ # source://spoom//lib/spoom/deadcode/indexer.rb#10
1624
+ sig { returns(::String) }
1625
+ def path; end
1626
+
1627
+ # Reference indexing
1628
+ #
1629
+ # source://spoom//lib/spoom/deadcode/indexer.rb#355
1630
+ sig { params(name: ::String, node: ::SyntaxTree::Node).void }
1631
+ def reference_constant(name, node); end
1632
+
1633
+ # source://spoom//lib/spoom/deadcode/indexer.rb#360
1634
+ sig { params(name: ::String, node: ::SyntaxTree::Node).void }
1635
+ def reference_method(name, node); end
1636
+
1637
+ # source://spoom//lib/spoom/deadcode/indexer.rb#382
1638
+ sig { params(node: ::SyntaxTree::Node).returns(::String) }
1639
+ def symbol_string(node); end
1640
+
1641
+ # Visit
1642
+ #
1643
+ # source://spoom//lib/spoom/deadcode/indexer.rb#35
1644
+ sig { override.params(node: T.nilable(::SyntaxTree::Node)).void }
1645
+ def visit(node); end
1646
+
1647
+ # source://spoom//lib/spoom/deadcode/indexer.rb#45
1648
+ sig { override.params(node: ::SyntaxTree::AliasNode).void }
1649
+ def visit_alias(node); end
1650
+
1651
+ # source://spoom//lib/spoom/deadcode/indexer.rb#50
1652
+ sig { override.params(node: ::SyntaxTree::ARef).void }
1653
+ def visit_aref(node); end
1654
+
1655
+ # source://spoom//lib/spoom/deadcode/indexer.rb#57
1656
+ sig { override.params(node: ::SyntaxTree::ARefField).void }
1657
+ def visit_aref_field(node); end
1658
+
1659
+ # source://spoom//lib/spoom/deadcode/indexer.rb#64
1660
+ sig { override.params(node: ::SyntaxTree::ArgBlock).void }
1661
+ def visit_arg_block(node); end
1662
+
1663
+ # source://spoom//lib/spoom/deadcode/indexer.rb#78
1664
+ sig { override.params(node: ::SyntaxTree::Binary).void }
1665
+ def visit_binary(node); end
1666
+
1667
+ # source://spoom//lib/spoom/deadcode/indexer.rb#94
1668
+ sig { override.params(node: ::SyntaxTree::CallNode).void }
1669
+ def visit_call(node); end
1670
+
1671
+ # source://spoom//lib/spoom/deadcode/indexer.rb#106
1672
+ sig { override.params(node: ::SyntaxTree::ClassDeclaration).void }
1673
+ def visit_class(node); end
1674
+
1675
+ # source://spoom//lib/spoom/deadcode/indexer.rb#119
1676
+ sig { override.params(node: ::SyntaxTree::Command).void }
1677
+ def visit_command(node); end
1678
+
1679
+ # source://spoom//lib/spoom/deadcode/indexer.rb#131
1680
+ sig { override.params(node: ::SyntaxTree::CommandCall).void }
1681
+ def visit_command_call(node); end
1682
+
1683
+ # source://spoom//lib/spoom/deadcode/indexer.rb#144
1684
+ sig { override.params(node: ::SyntaxTree::Const).void }
1685
+ def visit_const(node); end
1686
+
1687
+ # source://spoom//lib/spoom/deadcode/indexer.rb#149
1688
+ sig { override.params(node: ::SyntaxTree::ConstPathField).void }
1689
+ def visit_const_path_field(node); end
1690
+
1691
+ # source://spoom//lib/spoom/deadcode/indexer.rb#159
1692
+ sig { override.params(node: ::SyntaxTree::DefNode).void }
1693
+ def visit_def(node); end
1694
+
1695
+ # source://spoom//lib/spoom/deadcode/indexer.rb#167
1696
+ sig { override.params(node: ::SyntaxTree::Field).void }
1697
+ def visit_field(node); end
1698
+
1699
+ # source://spoom//lib/spoom/deadcode/indexer.rb#183
1700
+ sig { override.params(node: ::SyntaxTree::ModuleDeclaration).void }
1701
+ def visit_module(node); end
1702
+
1703
+ # source://spoom//lib/spoom/deadcode/indexer.rb#195
1704
+ sig { override.params(node: ::SyntaxTree::OpAssign).void }
1705
+ def visit_opassign(node); end
1706
+
1707
+ # source://spoom//lib/spoom/deadcode/indexer.rb#204
1708
+ sig { params(send: ::Spoom::Deadcode::Send).void }
1709
+ def visit_send(send); end
1710
+
1711
+ # source://spoom//lib/spoom/deadcode/indexer.rb#243
1712
+ sig { override.params(node: ::SyntaxTree::SymbolLiteral).void }
1713
+ def visit_symbol_literal(node); end
1714
+
1715
+ # source://spoom//lib/spoom/deadcode/indexer.rb#252
1716
+ sig { override.params(node: ::SyntaxTree::TopConstField).void }
1717
+ def visit_top_const_field(node); end
1718
+
1719
+ # source://spoom//lib/spoom/deadcode/indexer.rb#257
1720
+ sig { override.params(node: ::SyntaxTree::VarField).void }
1721
+ def visit_var_field(node); end
1722
+
1723
+ # source://spoom//lib/spoom/deadcode/indexer.rb#274
1724
+ sig { override.params(node: ::SyntaxTree::VCall).void }
1725
+ def visit_vcall(node); end
1726
+ end
1727
+
1728
+ # source://spoom//lib/spoom/deadcode.rb#33
1729
+ class Spoom::Deadcode::IndexerError < ::Spoom::Deadcode::Error; end
1730
+
1731
+ # source://spoom//lib/spoom/deadcode/location.rb#6
1732
+ class Spoom::Deadcode::Location
1733
+ include ::Comparable
1734
+
1735
+ # source://spoom//lib/spoom/deadcode/location.rb#37
1736
+ sig do
1737
+ params(
1738
+ file: ::String,
1739
+ start_line: ::Integer,
1740
+ start_column: ::Integer,
1741
+ end_line: ::Integer,
1742
+ end_column: ::Integer
1743
+ ).void
1744
+ end
1745
+ def initialize(file, start_line, start_column, end_line, end_column); end
1746
+
1747
+ # source://spoom//lib/spoom/deadcode/location.rb#46
1748
+ sig { override.params(other: ::BasicObject).returns(T.nilable(::Integer)) }
1749
+ def <=>(other); end
1750
+
1751
+ # @return [Integer]
1752
+ #
1753
+ # source://spoom//lib/spoom/deadcode/location.rb#26
1754
+ def end_column; end
1755
+
1756
+ # @return [Integer]
1757
+ #
1758
+ # source://spoom//lib/spoom/deadcode/location.rb#26
1759
+ def end_line; end
1760
+
1761
+ # source://spoom//lib/spoom/deadcode/location.rb#23
1762
+ sig { returns(::String) }
1763
+ def file; end
1764
+
1765
+ # @return [Integer]
1766
+ #
1767
+ # source://spoom//lib/spoom/deadcode/location.rb#26
1768
+ def start_column; end
1769
+
1770
+ # source://spoom//lib/spoom/deadcode/location.rb#26
1771
+ sig { returns(::Integer) }
1772
+ def start_line; end
1773
+
1774
+ # source://spoom//lib/spoom/deadcode/location.rb#53
1775
+ sig { returns(::String) }
1776
+ def to_s; end
1777
+
1778
+ class << self
1779
+ # source://spoom//lib/spoom/deadcode/location.rb#17
1780
+ sig { params(file: ::String, location: ::SyntaxTree::Location).returns(::Spoom::Deadcode::Location) }
1781
+ def from_syntax_tree(file, location); end
1782
+ end
1783
+ end
1784
+
1785
+ # source://spoom//lib/spoom/deadcode/location.rb#11
1786
+ class Spoom::Deadcode::Location::LocationError < ::Spoom::Error; end
1787
+
1788
+ # source://spoom//lib/spoom/deadcode.rb#32
1789
+ class Spoom::Deadcode::ParserError < ::Spoom::Deadcode::Error; end
1790
+
1791
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#8
1792
+ module Spoom::Deadcode::Plugins; end
1793
+
1794
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
1795
+ #
1796
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#9
1797
+ class Spoom::Deadcode::Plugins::Base
1798
+ abstract!
1799
+
1800
+ # Called when an accessor is defined.
1801
+ #
1802
+ # Will be called when the indexer processes a `attr_reader`, `attr_writer` or `attr_accessor` node.
1803
+ # Note that when this method is called, the definition for the node has already been added to the index.
1804
+ # It is still possible to ignore it from the plugin:
1805
+ #
1806
+ # ~~~rb
1807
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1808
+ # def on_define_accessor(indexer, definition)
1809
+ # definition.ignored! if definition.name == "foo"
1810
+ # end
1811
+ # end
1812
+ # ~~~
1813
+ #
1814
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#72
1815
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, definition: ::Spoom::Deadcode::Definition).void }
1816
+ def on_define_accessor(indexer, definition); end
1817
+
1818
+ # Called when a class is defined.
1819
+ #
1820
+ # Will be called when the indexer processes a `class` node.
1821
+ # Note that when this method is called, the definition for the node has already been added to the index.
1822
+ # It is still possible to ignore it from the plugin:
1823
+ #
1824
+ # ~~~rb
1825
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1826
+ # def on_define_class(indexer, definition)
1827
+ # definition.ignored! if definition.name == "Foo"
1828
+ # end
1829
+ # end
1830
+ # ~~~
1831
+ #
1832
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#90
1833
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, definition: ::Spoom::Deadcode::Definition).void }
1834
+ def on_define_class(indexer, definition); end
1835
+
1836
+ # Called when a constant is defined.
1837
+ #
1838
+ # Will be called when the indexer processes a `CONST =` node.
1839
+ # Note that when this method is called, the definition for the node has already been added to the index.
1840
+ # It is still possible to ignore it from the plugin:
1841
+ #
1842
+ # ~~~rb
1843
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1844
+ # def on_define_constant(indexer, definition)
1845
+ # definition.ignored! if definition.name == "FOO"
1846
+ # end
1847
+ # end
1848
+ # ~~~
1849
+ #
1850
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#108
1851
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, definition: ::Spoom::Deadcode::Definition).void }
1852
+ def on_define_constant(indexer, definition); end
1853
+
1854
+ # Called when a method is defined.
1855
+ #
1856
+ # Will be called when the indexer processes a `def` or `defs` node.
1857
+ # Note that when this method is called, the definition for the node has already been added to the index.
1858
+ # It is still possible to ignore it from the plugin:
1859
+ #
1860
+ # ~~~rb
1861
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1862
+ # def on_define_method(indexer, definition)
1863
+ # super # So the `ignore_method_names` DSL is still applied
1864
+ #
1865
+ # definition.ignored! if definition.name == "foo"
1866
+ # end
1867
+ # end
1868
+ # ~~~
1869
+ #
1870
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#128
1871
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, definition: ::Spoom::Deadcode::Definition).void }
1872
+ def on_define_method(indexer, definition); end
1873
+
1874
+ # Called when a module is defined.
1875
+ #
1876
+ # Will be called when the indexer processes a `module` node.
1877
+ # Note that when this method is called, the definition for the node has already been added to the index.
1878
+ # It is still possible to ignore it from the plugin:
1879
+ #
1880
+ # ~~~rb
1881
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1882
+ # def on_define_module(indexer, definition)
1883
+ # definition.ignored! if definition.name == "Foo"
1884
+ # end
1885
+ # end
1886
+ # ~~~
1887
+ #
1888
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#146
1889
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, definition: ::Spoom::Deadcode::Definition).void }
1890
+ def on_define_module(indexer, definition); end
1891
+
1892
+ # Called when a send is being processed
1893
+ #
1894
+ # ~~~rb
1895
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1896
+ # def on_send(indexer, send)
1897
+ # return unless send.name == "dsl_method"
1898
+ # return if send.args.empty?
1899
+ #
1900
+ # method_name = indexer.node_string(send.args.first).delete_prefix(":")
1901
+ # indexer.reference_method(method_name, send.node)
1902
+ # end
1903
+ # end
1904
+ # ~~~
1905
+ #
1906
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#164
1907
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, send: ::Spoom::Deadcode::Send).void }
1908
+ def on_send(indexer, send); end
1909
+
1910
+ private
1911
+
1912
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#171
1913
+ sig { params(name: ::String).returns(T::Boolean) }
1914
+ def ignored_method_name?(name); end
1915
+
1916
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#181
1917
+ sig { params(name: ::String, names_variable: ::Symbol, patterns_variable: ::Symbol).returns(T::Boolean) }
1918
+ def ignored_name?(name, names_variable, patterns_variable); end
1919
+
1920
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#176
1921
+ sig { params(const: ::Symbol).returns(T::Set[::String]) }
1922
+ def names(const); end
1923
+
1924
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#186
1925
+ sig { params(const: ::Symbol).returns(T::Array[::Regexp]) }
1926
+ def patterns(const); end
1927
+
1928
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#191
1929
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, send: ::Spoom::Deadcode::Send).void }
1930
+ def reference_send_first_symbol_as_method(indexer, send); end
1931
+
1932
+ class << self
1933
+ # Mark methods matching `names` as ignored.
1934
+ #
1935
+ # Names can be either strings or regexps:
1936
+ #
1937
+ # ~~~rb
1938
+ # class MyPlugin < Spoom::Deadcode::Plugins::Base
1939
+ # ignore_method_names(
1940
+ # "foo",
1941
+ # "bar",
1942
+ # /baz.*/,
1943
+ # )
1944
+ # end
1945
+ # ~~~
1946
+ #
1947
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#34
1948
+ sig { params(names: T.any(::Regexp, ::String)).void }
1949
+ def ignore_method_names(*names); end
1950
+
1951
+ private
1952
+
1953
+ # source://spoom//lib/spoom/deadcode/plugins/base.rb#41
1954
+ sig do
1955
+ params(
1956
+ names: T::Array[T.any(::Regexp, ::String)],
1957
+ names_variable: ::Symbol,
1958
+ patterns_variable: ::Symbol
1959
+ ).void
1960
+ end
1961
+ def save_names_and_patterns(names, names_variable, patterns_variable); end
1962
+ end
1963
+ end
1964
+
1965
+ # source://spoom//lib/spoom/deadcode/plugins/ruby.rb#7
1966
+ class Spoom::Deadcode::Plugins::Ruby < ::Spoom::Deadcode::Plugins::Base
1967
+ # source://spoom//lib/spoom/deadcode/plugins/ruby.rb#24
1968
+ sig { override.params(indexer: ::Spoom::Deadcode::Indexer, send: ::Spoom::Deadcode::Send).void }
1969
+ def on_send(indexer, send); end
1970
+
1971
+ private
1972
+
1973
+ # source://spoom//lib/spoom/deadcode/plugins/ruby.rb#49
1974
+ sig { params(indexer: ::Spoom::Deadcode::Indexer, send: ::Spoom::Deadcode::Send, node: ::SyntaxTree::Node).void }
1975
+ def reference_symbol_as_constant(indexer, send, node); end
1976
+ end
1977
+
1978
+ # A reference is a call to a method or a constant
1979
+ #
1980
+ # source://spoom//lib/spoom/deadcode/reference.rb#7
1981
+ class Spoom::Deadcode::Reference < ::T::Struct
1982
+ const :kind, ::Spoom::Deadcode::Reference::Kind
1983
+ const :name, ::String
1984
+ const :location, ::Spoom::Deadcode::Location
1985
+
1986
+ # Kind
1987
+ #
1988
+ # source://spoom//lib/spoom/deadcode/reference.rb#24
1989
+ sig { returns(T::Boolean) }
1990
+ def constant?; end
1991
+
1992
+ # source://spoom//lib/spoom/deadcode/reference.rb#29
1993
+ sig { returns(T::Boolean) }
1994
+ def method?; end
1995
+
1996
+ class << self
1997
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
1998
+ def inherited(s); end
1999
+ end
2000
+ end
2001
+
2002
+ # source://spoom//lib/spoom/deadcode/reference.rb#10
2003
+ class Spoom::Deadcode::Reference::Kind < ::T::Enum
2004
+ enums do
2005
+ Constant = new
2006
+ Method = new
2007
+ end
2008
+ end
2009
+
2010
+ # An abstraction to simplify handling of SyntaxTree::CallNode, SyntaxTree::Command, SyntaxTree::CommandCall and
2011
+ # SyntaxTree::VCall nodes.
2012
+ #
2013
+ # source://spoom//lib/spoom/deadcode/send.rb#8
2014
+ class Spoom::Deadcode::Send < ::T::Struct
2015
+ const :node, ::SyntaxTree::Node
2016
+ const :name, ::String
2017
+ const :recv, T.nilable(::SyntaxTree::Node), default: T.unsafe(nil)
2018
+ const :args, T::Array[::SyntaxTree::Node], default: T.unsafe(nil)
2019
+ const :block, T.nilable(::SyntaxTree::Node), default: T.unsafe(nil)
2020
+
2021
+ class << self
2022
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2023
+ def inherited(s); end
2024
+ end
2025
+ end
2026
+
2027
+ # source://spoom//lib/spoom.rb#12
2028
+ class Spoom::Error < ::StandardError; end
2029
+
2030
+ # source://spoom//lib/spoom/context/exec.rb#5
2031
+ class Spoom::ExecResult < ::T::Struct
2032
+ const :out, ::String
2033
+ const :err, T.nilable(::String)
2034
+ const :status, T::Boolean
2035
+ const :exit_code, ::Integer
2036
+
2037
+ # source://spoom//lib/spoom/context/exec.rb#14
2038
+ sig { returns(::String) }
2039
+ def to_s; end
2040
+
2041
+ class << self
2042
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2043
+ def inherited(s); end
2044
+ end
2045
+ end
2046
+
2047
+ # source://spoom//lib/spoom/file_collector.rb#5
2048
+ class Spoom::FileCollector
2049
+ # Initialize a new file collector
2050
+ #
2051
+ # If `allow_extensions` is empty, all files are collected.
2052
+ # If `allow_extensions` is an array of extensions, only files with one of these extensions are collected.
2053
+ #
2054
+ # If `allow_mime_types` is empty, all files are collected.
2055
+ # If `allow_mime_types` is an array of mimetypes, files without an extension are collected if their mimetype is in
2056
+ # the list.
2057
+ #
2058
+ # source://spoom//lib/spoom/file_collector.rb#26
2059
+ sig do
2060
+ params(
2061
+ allow_extensions: T::Array[::String],
2062
+ allow_mime_types: T::Array[::String],
2063
+ exclude_patterns: T::Array[::String]
2064
+ ).void
2065
+ end
2066
+ def initialize(allow_extensions: T.unsafe(nil), allow_mime_types: T.unsafe(nil), exclude_patterns: T.unsafe(nil)); end
2067
+
2068
+ # source://spoom//lib/spoom/file_collector.rb#9
2069
+ sig { returns(T::Array[::String]) }
2070
+ def files; end
2071
+
2072
+ # source://spoom//lib/spoom/file_collector.rb#39
2073
+ sig { params(path: ::String).void }
2074
+ def visit_path(path); end
2075
+
2076
+ # source://spoom//lib/spoom/file_collector.rb#34
2077
+ sig { params(paths: T::Array[::String]).void }
2078
+ def visit_paths(paths); end
2079
+
2080
+ private
2081
+
2082
+ # source://spoom//lib/spoom/file_collector.rb#56
2083
+ sig { params(path: ::String).returns(::String) }
2084
+ def clean_path(path); end
2085
+
2086
+ # source://spoom//lib/spoom/file_collector.rb#73
2087
+ sig { params(path: ::String).returns(T::Boolean) }
2088
+ def excluded_file?(path); end
2089
+
2090
+ # source://spoom//lib/spoom/file_collector.rb#88
2091
+ sig { params(path: ::String).returns(T::Boolean) }
2092
+ def excluded_path?(path); end
2093
+
2094
+ # source://spoom//lib/spoom/file_collector.rb#97
2095
+ sig { params(path: ::String).returns(T.nilable(::String)) }
2096
+ def mime_type_for(path); end
2097
+
2098
+ # source://spoom//lib/spoom/file_collector.rb#68
2099
+ sig { params(path: ::String).void }
2100
+ def visit_directory(path); end
2101
+
2102
+ # source://spoom//lib/spoom/file_collector.rb#61
2103
+ sig { params(path: ::String).void }
2104
+ def visit_file(path); end
2105
+ end
2106
+
2107
+ # Build a file hierarchy from a set of file paths.
2108
+ #
2109
+ # source://spoom//lib/spoom/file_tree.rb#6
2110
+ class Spoom::FileTree
2111
+ # source://spoom//lib/spoom/file_tree.rb#10
2112
+ sig { params(paths: T::Enumerable[::String]).void }
2113
+ def initialize(paths = T.unsafe(nil)); end
2114
+
2115
+ # Add a `path` to the tree
2116
+ #
2117
+ # This will create all nodes until the root of `path`.
2118
+ #
2119
+ # source://spoom//lib/spoom/file_tree.rb#25
2120
+ sig { params(path: ::String).returns(::Spoom::FileTree::Node) }
2121
+ def add_path(path); end
2122
+
2123
+ # Add all `paths` to the tree
2124
+ #
2125
+ # source://spoom//lib/spoom/file_tree.rb#17
2126
+ sig { params(paths: T::Enumerable[::String]).void }
2127
+ def add_paths(paths); end
2128
+
2129
+ # All the nodes in this tree
2130
+ #
2131
+ # source://spoom//lib/spoom/file_tree.rb#45
2132
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
2133
+ def nodes; end
2134
+
2135
+ # Return a map of typing scores for each node in the tree
2136
+ #
2137
+ # source://spoom//lib/spoom/file_tree.rb#67
2138
+ sig { params(context: ::Spoom::Context).returns(T::Hash[::Spoom::FileTree::Node, ::Float]) }
2139
+ def nodes_strictness_scores(context); end
2140
+
2141
+ # Return a map of strictnesses for each node in the tree
2142
+ #
2143
+ # source://spoom//lib/spoom/file_tree.rb#59
2144
+ sig { params(context: ::Spoom::Context).returns(T::Hash[::Spoom::FileTree::Node, T.nilable(::String)]) }
2145
+ def nodes_strictnesses(context); end
2146
+
2147
+ # All the paths in this tree
2148
+ #
2149
+ # source://spoom//lib/spoom/file_tree.rb#53
2150
+ sig { returns(T::Array[::String]) }
2151
+ def paths; end
2152
+
2153
+ # Return a map of typing scores for each path in the tree
2154
+ #
2155
+ # source://spoom//lib/spoom/file_tree.rb#75
2156
+ sig { params(context: ::Spoom::Context).returns(T::Hash[::String, ::Float]) }
2157
+ def paths_strictness_scores(context); end
2158
+
2159
+ # source://spoom//lib/spoom/file_tree.rb#80
2160
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean).void }
2161
+ def print(out: T.unsafe(nil), colors: T.unsafe(nil)); end
2162
+
2163
+ # source://spoom//lib/spoom/file_tree.rb#86
2164
+ sig { params(context: ::Spoom::Context, out: T.any(::IO, ::StringIO), colors: T::Boolean).void }
2165
+ def print_with_strictnesses(context, out: T.unsafe(nil), colors: T.unsafe(nil)); end
2166
+
2167
+ # All root nodes
2168
+ #
2169
+ # source://spoom//lib/spoom/file_tree.rb#39
2170
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
2171
+ def roots; end
2172
+ end
2173
+
2174
+ # A visitor that collects all the nodes in a tree
2175
+ #
2176
+ # source://spoom//lib/spoom/file_tree.rb#140
2177
+ class Spoom::FileTree::CollectNodes < ::Spoom::FileTree::Visitor
2178
+ # source://spoom//lib/spoom/file_tree.rb#147
2179
+ sig { void }
2180
+ def initialize; end
2181
+
2182
+ # source://spoom//lib/spoom/file_tree.rb#144
2183
+ sig { returns(T::Array[::Spoom::FileTree::Node]) }
2184
+ def nodes; end
2185
+
2186
+ # source://spoom//lib/spoom/file_tree.rb#153
2187
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
2188
+ def visit_node(node); end
2189
+ end
2190
+
2191
+ # A visitor that collects the typing score of each node in a tree
2192
+ #
2193
+ # source://spoom//lib/spoom/file_tree.rb#183
2194
+ class Spoom::FileTree::CollectScores < ::Spoom::FileTree::CollectStrictnesses
2195
+ # source://spoom//lib/spoom/file_tree.rb#190
2196
+ sig { params(context: ::Spoom::Context).void }
2197
+ def initialize(context); end
2198
+
2199
+ # source://spoom//lib/spoom/file_tree.rb#187
2200
+ sig { returns(T::Hash[::Spoom::FileTree::Node, ::Float]) }
2201
+ def scores; end
2202
+
2203
+ # source://spoom//lib/spoom/file_tree.rb#197
2204
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
2205
+ def visit_node(node); end
2206
+
2207
+ private
2208
+
2209
+ # source://spoom//lib/spoom/file_tree.rb#206
2210
+ sig { params(node: ::Spoom::FileTree::Node).returns(::Float) }
2211
+ def node_score(node); end
2212
+
2213
+ # source://spoom//lib/spoom/file_tree.rb#215
2214
+ sig { params(strictness: T.nilable(::String)).returns(::Float) }
2215
+ def strictness_score(strictness); end
2216
+ end
2217
+
2218
+ # A visitor that collects the strictness of each node in a tree
2219
+ #
2220
+ # source://spoom//lib/spoom/file_tree.rb#160
2221
+ class Spoom::FileTree::CollectStrictnesses < ::Spoom::FileTree::Visitor
2222
+ # source://spoom//lib/spoom/file_tree.rb#167
2223
+ sig { params(context: ::Spoom::Context).void }
2224
+ def initialize(context); end
2225
+
2226
+ # source://spoom//lib/spoom/file_tree.rb#164
2227
+ sig { returns(T::Hash[::Spoom::FileTree::Node, T.nilable(::String)]) }
2228
+ def strictnesses; end
2229
+
2230
+ # source://spoom//lib/spoom/file_tree.rb#174
2231
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
2232
+ def visit_node(node); end
2233
+ end
2234
+
2235
+ # A node representing either a file or a directory inside a FileTree
2236
+ #
2237
+ # source://spoom//lib/spoom/file_tree.rb#94
2238
+ class Spoom::FileTree::Node < ::T::Struct
2239
+ const :parent, T.nilable(::Spoom::FileTree::Node)
2240
+ const :name, ::String
2241
+ const :children, T::Hash[::String, ::Spoom::FileTree::Node], default: T.unsafe(nil)
2242
+
2243
+ # Full path to this node from root
2244
+ #
2245
+ # source://spoom//lib/spoom/file_tree.rb#108
2246
+ sig { returns(::String) }
2247
+ def path; end
2248
+
2249
+ class << self
2250
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2251
+ def inherited(s); end
2252
+ end
2253
+ end
2254
+
2255
+ # An internal class used to print a FileTree
2256
+ #
2257
+ # See `FileTree#print`
2258
+ #
2259
+ # source://spoom//lib/spoom/file_tree.rb#228
2260
+ class Spoom::FileTree::Printer < ::Spoom::FileTree::Visitor
2261
+ # source://spoom//lib/spoom/file_tree.rb#238
2262
+ sig do
2263
+ params(
2264
+ strictnesses: T::Hash[::Spoom::FileTree::Node, T.nilable(::String)],
2265
+ out: T.any(::IO, ::StringIO),
2266
+ colors: T::Boolean
2267
+ ).void
2268
+ end
2269
+ def initialize(strictnesses, out: T.unsafe(nil), colors: T.unsafe(nil)); end
2270
+
2271
+ # source://spoom//lib/spoom/file_tree.rb#246
2272
+ sig { override.params(node: ::Spoom::FileTree::Node).void }
2273
+ def visit_node(node); end
2274
+
2275
+ private
2276
+
2277
+ # source://spoom//lib/spoom/file_tree.rb#271
2278
+ sig { params(strictness: T.nilable(::String)).returns(::Spoom::Color) }
2279
+ def strictness_color(strictness); end
2280
+ end
2281
+
2282
+ # An abstract visitor for FileTree
2283
+ #
2284
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
2285
+ #
2286
+ # source://spoom//lib/spoom/file_tree.rb#117
2287
+ class Spoom::FileTree::Visitor
2288
+ abstract!
2289
+
2290
+ # source://spoom//lib/spoom/file_tree.rb#129
2291
+ sig { params(node: ::Spoom::FileTree::Node).void }
2292
+ def visit_node(node); end
2293
+
2294
+ # source://spoom//lib/spoom/file_tree.rb#134
2295
+ sig { params(nodes: T::Array[::Spoom::FileTree::Node]).void }
2296
+ def visit_nodes(nodes); end
2297
+
2298
+ # source://spoom//lib/spoom/file_tree.rb#124
2299
+ sig { params(tree: ::Spoom::FileTree).void }
2300
+ def visit_tree(tree); end
2301
+ end
2302
+
2303
+ # source://spoom//lib/spoom/context/git.rb#5
2304
+ module Spoom::Git; end
2305
+
2306
+ # source://spoom//lib/spoom/context/git.rb#6
2307
+ class Spoom::Git::Commit < ::T::Struct
2308
+ const :sha, ::String
2309
+ const :time, ::Time
2310
+
2311
+ # source://spoom//lib/spoom/context/git.rb#27
2312
+ sig { returns(::Integer) }
2313
+ def timestamp; end
2314
+
2315
+ class << self
2316
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2317
+ def inherited(s); end
2318
+
2319
+ # Parse a line formated as `%h %at` into a `Commit`
2320
+ #
2321
+ # source://spoom//lib/spoom/context/git.rb#14
2322
+ sig { params(string: ::String).returns(T.nilable(::Spoom::Git::Commit)) }
2323
+ def parse_line(string); end
2324
+ end
2325
+ end
2326
+
2327
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#5
2328
+ module Spoom::LSP; end
2329
+
2330
+ # source://spoom//lib/spoom/sorbet/lsp.rb#13
2331
+ class Spoom::LSP::Client
2332
+ # source://spoom//lib/spoom/sorbet/lsp.rb#17
2333
+ sig { params(sorbet_bin: ::String, sorbet_args: ::String, path: ::String).void }
2334
+ def initialize(sorbet_bin, *sorbet_args, path: T.unsafe(nil)); end
2335
+
2336
+ # source://spoom//lib/spoom/sorbet/lsp.rb#229
2337
+ sig { void }
2338
+ def close; end
2339
+
2340
+ # source://spoom//lib/spoom/sorbet/lsp.rb#131
2341
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
2342
+ def definitions(uri, line, column); end
2343
+
2344
+ # source://spoom//lib/spoom/sorbet/lsp.rb#212
2345
+ sig { params(uri: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
2346
+ def document_symbols(uri); end
2347
+
2348
+ # source://spoom//lib/spoom/sorbet/lsp.rb#89
2349
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T.nilable(::Spoom::LSP::Hover)) }
2350
+ def hover(uri, line, column); end
2351
+
2352
+ # source://spoom//lib/spoom/sorbet/lsp.rb#27
2353
+ sig { returns(::Integer) }
2354
+ def next_id; end
2355
+
2356
+ # LSP requests
2357
+ #
2358
+ # @raise [Error::AlreadyOpen]
2359
+ #
2360
+ # source://spoom//lib/spoom/sorbet/lsp.rb#72
2361
+ sig { params(workspace_path: ::String).void }
2362
+ def open(workspace_path); end
2363
+
2364
+ # source://spoom//lib/spoom/sorbet/lsp.rb#54
2365
+ sig { returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
2366
+ def read; end
2367
+
2368
+ # @raise [Error::BadHeaders]
2369
+ #
2370
+ # source://spoom//lib/spoom/sorbet/lsp.rb#43
2371
+ sig { returns(T.nilable(::String)) }
2372
+ def read_raw; end
2373
+
2374
+ # source://spoom//lib/spoom/sorbet/lsp.rb#173
2375
+ sig do
2376
+ params(
2377
+ uri: ::String,
2378
+ line: ::Integer,
2379
+ column: ::Integer,
2380
+ include_decl: T::Boolean
2381
+ ).returns(T::Array[::Spoom::LSP::Location])
2382
+ end
2383
+ def references(uri, line, column, include_decl = T.unsafe(nil)); end
2384
+
2385
+ # source://spoom//lib/spoom/sorbet/lsp.rb#37
2386
+ sig { params(message: ::Spoom::LSP::Message).returns(T.nilable(T::Hash[T.untyped, T.untyped])) }
2387
+ def send(message); end
2388
+
2389
+ # source://spoom//lib/spoom/sorbet/lsp.rb#32
2390
+ sig { params(json_string: ::String).void }
2391
+ def send_raw(json_string); end
2392
+
2393
+ # source://spoom//lib/spoom/sorbet/lsp.rb#110
2394
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::SignatureHelp]) }
2395
+ def signatures(uri, line, column); end
2396
+
2397
+ # source://spoom//lib/spoom/sorbet/lsp.rb#197
2398
+ sig { params(query: ::String).returns(T::Array[::Spoom::LSP::DocumentSymbol]) }
2399
+ def symbols(query); end
2400
+
2401
+ # source://spoom//lib/spoom/sorbet/lsp.rb#152
2402
+ sig { params(uri: ::String, line: ::Integer, column: ::Integer).returns(T::Array[::Spoom::LSP::Location]) }
2403
+ def type_definitions(uri, line, column); end
2404
+ end
2405
+
2406
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#178
2407
+ class Spoom::LSP::Diagnostic < ::T::Struct
2408
+ include ::Spoom::LSP::PrintableSymbol
2409
+
2410
+ const :range, ::Spoom::LSP::Range
2411
+ const :code, ::Integer
2412
+ const :message, ::String
2413
+ const :informations, ::Object
2414
+
2415
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#202
2416
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2417
+ def accept_printer(printer); end
2418
+
2419
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#207
2420
+ sig { returns(::String) }
2421
+ def to_s; end
2422
+
2423
+ class << self
2424
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#191
2425
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Diagnostic) }
2426
+ def from_json(json); end
2427
+
2428
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2429
+ def inherited(s); end
2430
+ end
2431
+ end
2432
+
2433
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#212
2434
+ class Spoom::LSP::DocumentSymbol < ::T::Struct
2435
+ include ::Spoom::LSP::PrintableSymbol
2436
+
2437
+ const :name, ::String
2438
+ const :detail, T.nilable(::String)
2439
+ const :kind, ::Integer
2440
+ const :location, T.nilable(::Spoom::LSP::Location)
2441
+ const :range, T.nilable(::Spoom::LSP::Range)
2442
+ const :children, T::Array[::Spoom::LSP::DocumentSymbol]
2443
+
2444
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#240
2445
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2446
+ def accept_printer(printer); end
2447
+
2448
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#272
2449
+ sig { returns(::String) }
2450
+ def kind_string; end
2451
+
2452
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#267
2453
+ sig { returns(::String) }
2454
+ def to_s; end
2455
+
2456
+ class << self
2457
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#227
2458
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::DocumentSymbol) }
2459
+ def from_json(json); end
2460
+
2461
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2462
+ def inherited(s); end
2463
+ end
2464
+ end
2465
+
2466
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#276
2467
+ Spoom::LSP::DocumentSymbol::SYMBOL_KINDS = T.let(T.unsafe(nil), Hash)
2468
+
2469
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#6
2470
+ class Spoom::LSP::Error < ::StandardError; end
2471
+
2472
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#7
2473
+ class Spoom::LSP::Error::AlreadyOpen < ::Spoom::LSP::Error; end
2474
+
2475
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#8
2476
+ class Spoom::LSP::Error::BadHeaders < ::Spoom::LSP::Error; end
2477
+
2478
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#10
2479
+ class Spoom::LSP::Error::Diagnostics < ::Spoom::LSP::Error
2480
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#32
2481
+ sig { params(uri: ::String, diagnostics: T::Array[::Spoom::LSP::Diagnostic]).void }
2482
+ def initialize(uri, diagnostics); end
2483
+
2484
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#17
2485
+ sig { returns(T::Array[::Spoom::LSP::Diagnostic]) }
2486
+ def diagnostics; end
2487
+
2488
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#14
2489
+ sig { returns(::String) }
2490
+ def uri; end
2491
+
2492
+ class << self
2493
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#23
2494
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Error::Diagnostics) }
2495
+ def from_json(json); end
2496
+ end
2497
+ end
2498
+
2499
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#19
2500
+ class Spoom::LSP::Hover < ::T::Struct
2501
+ include ::Spoom::LSP::PrintableSymbol
2502
+
2503
+ const :contents, ::String
2504
+ const :range, T.nilable(T::Range[T.untyped])
2505
+
2506
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#39
2507
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2508
+ def accept_printer(printer); end
2509
+
2510
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#45
2511
+ sig { returns(::String) }
2512
+ def to_s; end
2513
+
2514
+ class << self
2515
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#30
2516
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) }
2517
+ def from_json(json); end
2518
+
2519
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2520
+ def inherited(s); end
2521
+ end
2522
+ end
2523
+
2524
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#112
2525
+ class Spoom::LSP::Location < ::T::Struct
2526
+ include ::Spoom::LSP::PrintableSymbol
2527
+
2528
+ const :uri, ::String
2529
+ const :range, ::Spoom::LSP::Range
2530
+
2531
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#132
2532
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2533
+ def accept_printer(printer); end
2534
+
2535
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#138
2536
+ sig { returns(::String) }
2537
+ def to_s; end
2538
+
2539
+ class << self
2540
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#123
2541
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Location) }
2542
+ def from_json(json); end
2543
+
2544
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2545
+ def inherited(s); end
2546
+ end
2547
+ end
2548
+
2549
+ # A general message as defined by JSON-RPC.
2550
+ #
2551
+ # The language server protocol always uses `"2.0"` as the `jsonrpc` version.
2552
+ #
2553
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#12
2554
+ class Spoom::LSP::Message
2555
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#16
2556
+ sig { void }
2557
+ def initialize; end
2558
+
2559
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#21
2560
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
2561
+ def as_json; end
2562
+
2563
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#29
2564
+ sig { params(args: T.untyped).returns(::String) }
2565
+ def to_json(*args); end
2566
+ end
2567
+
2568
+ # A notification message.
2569
+ #
2570
+ # A processed notification message must not send a response back. They work like events.
2571
+ #
2572
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#58
2573
+ class Spoom::LSP::Notification < ::Spoom::LSP::Message
2574
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#68
2575
+ sig { params(method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
2576
+ def initialize(method, params); end
2577
+
2578
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#62
2579
+ sig { returns(::String) }
2580
+ def method; end
2581
+
2582
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#65
2583
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
2584
+ def params; end
2585
+ end
2586
+
2587
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#50
2588
+ class Spoom::LSP::Position < ::T::Struct
2589
+ include ::Spoom::LSP::PrintableSymbol
2590
+
2591
+ const :line, ::Integer
2592
+ const :char, ::Integer
2593
+
2594
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#70
2595
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2596
+ def accept_printer(printer); end
2597
+
2598
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#75
2599
+ sig { returns(::String) }
2600
+ def to_s; end
2601
+
2602
+ class << self
2603
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#61
2604
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) }
2605
+ def from_json(json); end
2606
+
2607
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2608
+ def inherited(s); end
2609
+ end
2610
+ end
2611
+
2612
+ # @abstract Subclasses must implement the `abstract` methods below.
2613
+ #
2614
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#9
2615
+ module Spoom::LSP::PrintableSymbol
2616
+ interface!
2617
+
2618
+ # @abstract
2619
+ #
2620
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#16
2621
+ sig { abstract.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2622
+ def accept_printer(printer); end
2623
+ end
2624
+
2625
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#80
2626
+ class Spoom::LSP::Range < ::T::Struct
2627
+ include ::Spoom::LSP::PrintableSymbol
2628
+
2629
+ const :start, ::Spoom::LSP::Position
2630
+ const :end, ::Spoom::LSP::Position
2631
+
2632
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#100
2633
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2634
+ def accept_printer(printer); end
2635
+
2636
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#107
2637
+ sig { returns(::String) }
2638
+ def to_s; end
2639
+
2640
+ class << self
2641
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#91
2642
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) }
2643
+ def from_json(json); end
2644
+
2645
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2646
+ def inherited(s); end
2647
+ end
2648
+ end
2649
+
2650
+ # A request message to describe a request between the client and the server.
2651
+ #
2652
+ # Every processed request must send a response back to the sender of the request.
2653
+ #
2654
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#37
2655
+ class Spoom::LSP::Request < ::Spoom::LSP::Message
2656
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#47
2657
+ sig { params(id: ::Integer, method: ::String, params: T::Hash[T.untyped, T.untyped]).void }
2658
+ def initialize(id, method, params); end
2659
+
2660
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#41
2661
+ sig { returns(::Integer) }
2662
+ def id; end
2663
+
2664
+ # source://spoom//lib/spoom/sorbet/lsp/base.rb#44
2665
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
2666
+ def params; end
2667
+ end
2668
+
2669
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#40
2670
+ class Spoom::LSP::ResponseError < ::Spoom::LSP::Error
2671
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#63
2672
+ sig { params(code: ::Integer, message: ::String, data: T::Hash[T.untyped, T.untyped]).void }
2673
+ def initialize(code, message, data); end
2674
+
2675
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#44
2676
+ sig { returns(::Integer) }
2677
+ def code; end
2678
+
2679
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#47
2680
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
2681
+ def data; end
2682
+
2683
+ class << self
2684
+ # source://spoom//lib/spoom/sorbet/lsp/errors.rb#53
2685
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::ResponseError) }
2686
+ def from_json(json); end
2687
+ end
2688
+ end
2689
+
2690
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#143
2691
+ class Spoom::LSP::SignatureHelp < ::T::Struct
2692
+ include ::Spoom::LSP::PrintableSymbol
2693
+
2694
+ const :label, T.nilable(::String)
2695
+ const :doc, ::Object
2696
+ const :params, T::Array[T.untyped]
2697
+
2698
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#165
2699
+ sig { override.params(printer: ::Spoom::LSP::SymbolPrinter).void }
2700
+ def accept_printer(printer); end
2701
+
2702
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#173
2703
+ sig { returns(::String) }
2704
+ def to_s; end
2705
+
2706
+ class << self
2707
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#155
2708
+ sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::SignatureHelp) }
2709
+ def from_json(json); end
2710
+
2711
+ # source://sorbet-runtime/0.5.10962/lib/types/struct.rb#13
2712
+ def inherited(s); end
2713
+ end
2714
+ end
2715
+
2716
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#309
2717
+ class Spoom::LSP::SymbolPrinter < ::Spoom::Printer
2718
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#326
2719
+ sig do
2720
+ params(
2721
+ out: T.any(::IO, ::StringIO),
2722
+ colors: T::Boolean,
2723
+ indent_level: ::Integer,
2724
+ prefix: T.nilable(::String)
2725
+ ).void
2726
+ end
2727
+ def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil), prefix: T.unsafe(nil)); end
2728
+
2729
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#348
2730
+ sig { params(uri: ::String).returns(::String) }
2731
+ def clean_uri(uri); end
2732
+
2733
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#316
2734
+ sig { returns(T.nilable(::String)) }
2735
+ def prefix; end
2736
+
2737
+ # @return [String, nil]
2738
+ #
2739
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#316
2740
+ def prefix=(_arg0); end
2741
+
2742
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#356
2743
+ sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
2744
+ def print_list(objects); end
2745
+
2746
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#336
2747
+ sig { params(object: T.nilable(::Spoom::LSP::PrintableSymbol)).void }
2748
+ def print_object(object); end
2749
+
2750
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#343
2751
+ sig { params(objects: T::Array[::Spoom::LSP::PrintableSymbol]).void }
2752
+ def print_objects(objects); end
2753
+
2754
+ # source://spoom//lib/spoom/sorbet/lsp/structures.rb#313
2755
+ sig { returns(T::Set[::Integer]) }
2756
+ def seen; end
2757
+ end
2758
+
2759
+ # source://spoom//lib/spoom/printer.rb#7
2760
+ class Spoom::Printer
2761
+ include ::Spoom::Colorize
2762
+
2763
+ # source://spoom//lib/spoom/printer.rb#17
2764
+ sig { params(out: T.any(::IO, ::StringIO), colors: T::Boolean, indent_level: ::Integer).void }
2765
+ def initialize(out: T.unsafe(nil), colors: T.unsafe(nil), indent_level: T.unsafe(nil)); end
2766
+
2767
+ # Colorize `string` with color if `@colors`
2768
+ #
2769
+ # source://spoom//lib/spoom/printer.rb#78
2770
+ sig { params(string: ::String, color: ::Spoom::Color).returns(::String) }
2771
+ def colorize(string, *color); end
2772
+
2773
+ # Decrease indent level
2774
+ #
2775
+ # source://spoom//lib/spoom/printer.rb#31
2776
+ sig { void }
2777
+ def dedent; end
2778
+
2779
+ # Increase indent level
2780
+ #
2781
+ # source://spoom//lib/spoom/printer.rb#25
2782
+ sig { void }
2783
+ def indent; end
2784
+
2785
+ # source://spoom//lib/spoom/printer.rb#14
2786
+ sig { returns(T.any(::IO, ::StringIO)) }
2787
+ def out; end
2788
+
2789
+ # @return [IO, StringIO]
2790
+ #
2791
+ # source://spoom//lib/spoom/printer.rb#14
2792
+ def out=(_arg0); end
2793
+
2794
+ # Print `string` into `out`
2795
+ #
2796
+ # source://spoom//lib/spoom/printer.rb#37
2797
+ sig { params(string: T.nilable(::String)).void }
2798
+ def print(string); end
2799
+
2800
+ # Print `string` colored with `color` into `out`
2801
+ #
2802
+ # Does not use colors unless `@colors`.
2803
+ #
2804
+ # source://spoom//lib/spoom/printer.rb#47
2805
+ sig { params(string: T.nilable(::String), color: ::Spoom::Color).void }
2806
+ def print_colored(string, *color); end
2807
+
2808
+ # Print `string` with indent and newline
2809
+ #
2810
+ # source://spoom//lib/spoom/printer.rb#62
2811
+ sig { params(string: T.nilable(::String)).void }
2812
+ def printl(string); end
2813
+
2814
+ # Print a new line into `out`
2815
+ #
2816
+ # source://spoom//lib/spoom/printer.rb#56
2817
+ sig { void }
2818
+ def printn; end
2819
+
2820
+ # Print an indent space into `out`
2821
+ #
2822
+ # source://spoom//lib/spoom/printer.rb#72
2823
+ sig { void }
2824
+ def printt; end
2825
+ end
2826
+
2827
+ # source://spoom//lib/spoom.rb#10
2828
+ Spoom::SPOOM_PATH = T.let(T.unsafe(nil), String)
2829
+
2830
+ # source://spoom//lib/spoom/sorbet/config.rb#5
2831
+ module Spoom::Sorbet; end
2832
+
2833
+ # source://spoom//lib/spoom/sorbet.rb#39
2834
+ Spoom::Sorbet::BIN_PATH = T.let(T.unsafe(nil), String)
2835
+
2836
+ # source://spoom//lib/spoom/sorbet.rb#36
2837
+ Spoom::Sorbet::CONFIG_PATH = T.let(T.unsafe(nil), String)
2838
+
2839
+ # Parse Sorbet config files
2840
+ #
2841
+ # Parses a Sorbet config file:
2842
+ #
2843
+ # ```ruby
2844
+ # config = Spoom::Sorbet::Config.parse_file("sorbet/config")
2845
+ # puts config.paths # "."
2846
+ # ```
2847
+ #
2848
+ # Parses a Sorbet config string:
2849
+ #
2850
+ # ```ruby
2851
+ # config = Spoom::Sorbet::Config.parse_string(<<~CONFIG)
2852
+ # a
2853
+ # --file=b
2854
+ # --ignore=c
2855
+ # CONFIG
2856
+ # puts config.paths # "a", "b"
2857
+ # puts config.ignore # "c"
2858
+ # ```
2859
+ #
2860
+ # source://spoom//lib/spoom/sorbet/config.rb#26
2861
+ class Spoom::Sorbet::Config
2862
+ # source://spoom//lib/spoom/sorbet/config.rb#38
2863
+ sig { void }
2864
+ def initialize; end
2865
+
2866
+ # @return [Array<String>]
2867
+ #
2868
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2869
+ def allowed_extensions; end
2870
+
2871
+ # @return [Array<String>]
2872
+ #
2873
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2874
+ def allowed_extensions=(_arg0); end
2875
+
2876
+ # source://spoom//lib/spoom/sorbet/config.rb#46
2877
+ sig { returns(::Spoom::Sorbet::Config) }
2878
+ def copy; end
2879
+
2880
+ # @return [Array<String>]
2881
+ #
2882
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2883
+ def ignore; end
2884
+
2885
+ # @return [Array<String>]
2886
+ #
2887
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2888
+ def ignore=(_arg0); end
2889
+
2890
+ # source://spoom//lib/spoom/sorbet/config.rb#35
2891
+ sig { returns(T::Boolean) }
2892
+ def no_stdlib; end
2893
+
2894
+ # @return [Boolean]
2895
+ #
2896
+ # source://spoom//lib/spoom/sorbet/config.rb#35
2897
+ def no_stdlib=(_arg0); end
2898
+
2899
+ # Returns self as a string of options that can be passed to Sorbet
2900
+ #
2901
+ # Example:
2902
+ # ~~~rb
2903
+ # config = Sorbet::Config.new
2904
+ # config.paths << "/foo"
2905
+ # config.paths << "/bar"
2906
+ # config.ignore << "/baz"
2907
+ # config.allowed_extensions << ".rb"
2908
+ #
2909
+ # puts config.options_string # "/foo /bar --ignore /baz --allowed-extension .rb"
2910
+ # ~~~
2911
+ #
2912
+ # source://spoom//lib/spoom/sorbet/config.rb#68
2913
+ sig { returns(::String) }
2914
+ def options_string; end
2915
+
2916
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2917
+ sig { returns(T::Array[::String]) }
2918
+ def paths; end
2919
+
2920
+ # @return [Array<String>]
2921
+ #
2922
+ # source://spoom//lib/spoom/sorbet/config.rb#32
2923
+ def paths=(_arg0); end
2924
+
2925
+ class << self
2926
+ # source://spoom//lib/spoom/sorbet/config.rb#81
2927
+ sig { params(sorbet_config_path: ::String).returns(::Spoom::Sorbet::Config) }
2928
+ def parse_file(sorbet_config_path); end
2929
+
2930
+ # source://spoom//lib/spoom/sorbet/config.rb#86
2931
+ sig { params(sorbet_config: ::String).returns(::Spoom::Sorbet::Config) }
2932
+ def parse_string(sorbet_config); end
2933
+
2934
+ private
2935
+
2936
+ # source://spoom//lib/spoom/sorbet/config.rb#150
2937
+ sig { params(line: ::String).returns(::String) }
2938
+ def parse_option(line); end
2939
+ end
2940
+ end
2941
+
2942
+ # source://spoom//lib/spoom/sorbet/config.rb#29
2943
+ Spoom::Sorbet::Config::DEFAULT_ALLOWED_EXTENSIONS = T.let(T.unsafe(nil), Array)
2944
+
2945
+ # source://spoom//lib/spoom/sorbet.rb#14
2946
+ class Spoom::Sorbet::Error < ::StandardError
2947
+ # source://spoom//lib/spoom/sorbet.rb#29
2948
+ sig { params(message: ::String, result: ::Spoom::ExecResult).void }
2949
+ def initialize(message, result); end
2950
+
2951
+ # source://spoom//lib/spoom/sorbet.rb#21
2952
+ sig { returns(::Spoom::ExecResult) }
2953
+ def result; end
2954
+ end
2955
+
2956
+ # source://spoom//lib/spoom/sorbet.rb#17
2957
+ class Spoom::Sorbet::Error::Killed < ::Spoom::Sorbet::Error; end
2958
+
2959
+ # source://spoom//lib/spoom/sorbet.rb#18
2960
+ class Spoom::Sorbet::Error::Segfault < ::Spoom::Sorbet::Error; end
2961
+
2962
+ # source://spoom//lib/spoom/sorbet/errors.rb#6
2963
+ module Spoom::Sorbet::Errors
2964
+ class << self
2965
+ # source://spoom//lib/spoom/sorbet/errors.rb#13
2966
+ sig { params(errors: T::Array[::Spoom::Sorbet::Errors::Error]).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
2967
+ def sort_errors_by_code(errors); end
2968
+ end
2969
+ end
2970
+
2971
+ # source://spoom//lib/spoom/sorbet/errors.rb#7
2972
+ Spoom::Sorbet::Errors::DEFAULT_ERROR_URL_BASE = T.let(T.unsafe(nil), String)
2973
+
2974
+ # source://spoom//lib/spoom/sorbet/errors.rb#125
2975
+ class Spoom::Sorbet::Errors::Error
2976
+ include ::Comparable
2977
+
2978
+ # source://spoom//lib/spoom/sorbet/errors.rb#151
2979
+ sig do
2980
+ params(
2981
+ file: T.nilable(::String),
2982
+ line: T.nilable(::Integer),
2983
+ message: T.nilable(::String),
2984
+ code: T.nilable(::Integer),
2985
+ more: T::Array[::String]
2986
+ ).void
2987
+ end
2988
+ def initialize(file, line, message, code, more = T.unsafe(nil)); end
2989
+
2990
+ # By default errors are sorted by location
2991
+ #
2992
+ # source://spoom//lib/spoom/sorbet/errors.rb#162
2993
+ sig { params(other: T.untyped).returns(::Integer) }
2994
+ def <=>(other); end
2995
+
2996
+ # @return [Integer, nil]
2997
+ #
2998
+ # source://spoom//lib/spoom/sorbet/errors.rb#133
2999
+ def code; end
3000
+
3001
+ # source://spoom//lib/spoom/sorbet/errors.rb#130
3002
+ sig { returns(T.nilable(::String)) }
3003
+ def file; end
3004
+
3005
+ # Other files associated with the error
3006
+ #
3007
+ # source://spoom//lib/spoom/sorbet/errors.rb#140
3008
+ sig { returns(T::Set[::String]) }
3009
+ def files_from_error_sections; end
3010
+
3011
+ # source://spoom//lib/spoom/sorbet/errors.rb#133
3012
+ sig { returns(T.nilable(::Integer)) }
3013
+ def line; end
3014
+
3015
+ # @return [String, nil]
3016
+ #
3017
+ # source://spoom//lib/spoom/sorbet/errors.rb#130
3018
+ def message; end
3019
+
3020
+ # source://spoom//lib/spoom/sorbet/errors.rb#136
3021
+ sig { returns(T::Array[::String]) }
3022
+ def more; end
3023
+
3024
+ # source://spoom//lib/spoom/sorbet/errors.rb#169
3025
+ sig { returns(::String) }
3026
+ def to_s; end
3027
+ end
3028
+
3029
+ # Parse errors from Sorbet output
3030
+ #
3031
+ # source://spoom//lib/spoom/sorbet/errors.rb#18
3032
+ class Spoom::Sorbet::Errors::Parser
3033
+ # source://spoom//lib/spoom/sorbet/errors.rb#43
3034
+ sig { params(error_url_base: ::String).void }
3035
+ def initialize(error_url_base: T.unsafe(nil)); end
3036
+
3037
+ # source://spoom//lib/spoom/sorbet/errors.rb#50
3038
+ sig { params(output: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
3039
+ def parse(output); end
3040
+
3041
+ private
3042
+
3043
+ # source://spoom//lib/spoom/sorbet/errors.rb#114
3044
+ sig { params(line: ::String).void }
3045
+ def append_error(line); end
3046
+
3047
+ # source://spoom//lib/spoom/sorbet/errors.rb#106
3048
+ sig { void }
3049
+ def close_error; end
3050
+
3051
+ # source://spoom//lib/spoom/sorbet/errors.rb#73
3052
+ sig { params(error_url_base: ::String).returns(::Regexp) }
3053
+ def error_line_match_regexp(error_url_base); end
3054
+
3055
+ # source://spoom//lib/spoom/sorbet/errors.rb#90
3056
+ sig { params(line: ::String).returns(T.nilable(::Spoom::Sorbet::Errors::Error)) }
3057
+ def match_error_line(line); end
3058
+
3059
+ # source://spoom//lib/spoom/sorbet/errors.rb#99
3060
+ sig { params(error: ::Spoom::Sorbet::Errors::Error).void }
3061
+ def open_error(error); end
3062
+
3063
+ class << self
3064
+ # source://spoom//lib/spoom/sorbet/errors.rb#36
3065
+ sig { params(output: ::String, error_url_base: ::String).returns(T::Array[::Spoom::Sorbet::Errors::Error]) }
3066
+ def parse_string(output, error_url_base: T.unsafe(nil)); end
3067
+ end
3068
+ end
3069
+
3070
+ # source://spoom//lib/spoom/sorbet/errors.rb#21
3071
+ Spoom::Sorbet::Errors::Parser::HEADER = T.let(T.unsafe(nil), Array)
3072
+
3073
+ # source://spoom//lib/spoom/sorbet.rb#37
3074
+ Spoom::Sorbet::GEM_PATH = T.let(T.unsafe(nil), String)
3075
+
3076
+ # source://spoom//lib/spoom/sorbet.rb#38
3077
+ Spoom::Sorbet::GEM_VERSION = T.let(T.unsafe(nil), String)
3078
+
3079
+ # source://spoom//lib/spoom/sorbet.rb#41
3080
+ Spoom::Sorbet::KILLED_CODE = T.let(T.unsafe(nil), Integer)
3081
+
3082
+ # source://spoom//lib/spoom/sorbet/metrics.rb#8
3083
+ module Spoom::Sorbet::MetricsParser
3084
+ class << self
3085
+ # source://spoom//lib/spoom/sorbet/metrics.rb#15
3086
+ sig { params(path: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
3087
+ def parse_file(path, prefix = T.unsafe(nil)); end
3088
+
3089
+ # source://spoom//lib/spoom/sorbet/metrics.rb#25
3090
+ sig { params(obj: T::Hash[::String, T.untyped], prefix: ::String).returns(T::Hash[::String, ::Integer]) }
3091
+ def parse_hash(obj, prefix = T.unsafe(nil)); end
3092
+
3093
+ # source://spoom//lib/spoom/sorbet/metrics.rb#20
3094
+ sig { params(string: ::String, prefix: ::String).returns(T::Hash[::String, ::Integer]) }
3095
+ def parse_string(string, prefix = T.unsafe(nil)); end
3096
+ end
3097
+ end
3098
+
3099
+ # source://spoom//lib/spoom/sorbet/metrics.rb#9
3100
+ Spoom::Sorbet::MetricsParser::DEFAULT_PREFIX = T.let(T.unsafe(nil), String)
3101
+
3102
+ # source://spoom//lib/spoom/sorbet.rb#42
3103
+ Spoom::Sorbet::SEGFAULT_CODE = T.let(T.unsafe(nil), Integer)
3104
+
3105
+ # source://spoom//lib/spoom/sorbet/sigils.rb#9
3106
+ module Spoom::Sorbet::Sigils
3107
+ class << self
3108
+ # changes the sigil in the file at the passed path to the specified new strictness
3109
+ #
3110
+ # source://spoom//lib/spoom/sorbet/sigils.rb#72
3111
+ sig { params(path: T.any(::Pathname, ::String), new_strictness: ::String).returns(T::Boolean) }
3112
+ def change_sigil_in_file(path, new_strictness); end
3113
+
3114
+ # changes the sigil to have a new strictness in a list of files
3115
+ #
3116
+ # source://spoom//lib/spoom/sorbet/sigils.rb#83
3117
+ sig { params(path_list: T::Array[::String], new_strictness: ::String).returns(T::Array[::String]) }
3118
+ def change_sigil_in_files(path_list, new_strictness); end
3119
+
3120
+ # returns a string containing the strictness of a sigil in a file at the passed path
3121
+ # * returns nil if no sigil
3122
+ #
3123
+ # source://spoom//lib/spoom/sorbet/sigils.rb#63
3124
+ sig { params(path: T.any(::Pathname, ::String)).returns(T.nilable(::String)) }
3125
+ def file_strictness(path); end
3126
+
3127
+ # returns the full sigil comment string for the passed strictness
3128
+ #
3129
+ # source://spoom//lib/spoom/sorbet/sigils.rb#38
3130
+ sig { params(strictness: ::String).returns(::String) }
3131
+ def sigil_string(strictness); end
3132
+
3133
+ # returns the strictness of a sigil in the passed file content string (nil if no sigil)
3134
+ #
3135
+ # source://spoom//lib/spoom/sorbet/sigils.rb#50
3136
+ sig { params(content: ::String).returns(T.nilable(::String)) }
3137
+ def strictness_in_content(content); end
3138
+
3139
+ # returns a string which is the passed content but with the sigil updated to a new strictness
3140
+ #
3141
+ # source://spoom//lib/spoom/sorbet/sigils.rb#56
3142
+ sig { params(content: ::String, new_strictness: ::String).returns(::String) }
3143
+ def update_sigil(content, new_strictness); end
3144
+
3145
+ # returns true if the passed string is a valid strictness (else false)
3146
+ #
3147
+ # source://spoom//lib/spoom/sorbet/sigils.rb#44
3148
+ sig { params(strictness: ::String).returns(T::Boolean) }
3149
+ def valid_strictness?(strictness); end
3150
+ end
3151
+ end
3152
+
3153
+ # source://spoom//lib/spoom/sorbet/sigils.rb#31
3154
+ Spoom::Sorbet::Sigils::SIGIL_REGEXP = T.let(T.unsafe(nil), Regexp)
3155
+
3156
+ # source://spoom//lib/spoom/sorbet/sigils.rb#13
3157
+ Spoom::Sorbet::Sigils::STRICTNESS_FALSE = T.let(T.unsafe(nil), String)
3158
+
3159
+ # source://spoom//lib/spoom/sorbet/sigils.rb#12
3160
+ Spoom::Sorbet::Sigils::STRICTNESS_IGNORE = T.let(T.unsafe(nil), String)
3161
+
3162
+ # source://spoom//lib/spoom/sorbet/sigils.rb#17
3163
+ Spoom::Sorbet::Sigils::STRICTNESS_INTERNAL = T.let(T.unsafe(nil), String)
3164
+
3165
+ # source://spoom//lib/spoom/sorbet/sigils.rb#15
3166
+ Spoom::Sorbet::Sigils::STRICTNESS_STRICT = T.let(T.unsafe(nil), String)
3167
+
3168
+ # source://spoom//lib/spoom/sorbet/sigils.rb#16
3169
+ Spoom::Sorbet::Sigils::STRICTNESS_STRONG = T.let(T.unsafe(nil), String)
3170
+
3171
+ # source://spoom//lib/spoom/sorbet/sigils.rb#14
3172
+ Spoom::Sorbet::Sigils::STRICTNESS_TRUE = T.let(T.unsafe(nil), String)
3173
+
3174
+ # source://spoom//lib/spoom/sorbet/sigils.rb#19
3175
+ Spoom::Sorbet::Sigils::VALID_STRICTNESS = T.let(T.unsafe(nil), Array)
3176
+
3177
+ # source://spoom//lib/spoom/timeline.rb#5
3178
+ class Spoom::Timeline
3179
+ # source://spoom//lib/spoom/timeline.rb#9
3180
+ sig { params(context: ::Spoom::Context, from: ::Time, to: ::Time).void }
3181
+ def initialize(context, from, to); end
3182
+
3183
+ # Return one commit for each date in `dates`
3184
+ #
3185
+ # source://spoom//lib/spoom/timeline.rb#36
3186
+ sig { params(dates: T::Array[::Time]).returns(T::Array[::Spoom::Git::Commit]) }
3187
+ def commits_for_dates(dates); end
3188
+
3189
+ # Return all months between `from` and `to`
3190
+ #
3191
+ # source://spoom//lib/spoom/timeline.rb#23
3192
+ sig { returns(T::Array[::Time]) }
3193
+ def months; end
3194
+
3195
+ # Return one commit for each month between `from` and `to`
3196
+ #
3197
+ # source://spoom//lib/spoom/timeline.rb#17
3198
+ sig { returns(T::Array[::Spoom::Git::Commit]) }
3199
+ def ticks; end
3200
+ end
3201
+
3202
+ # source://spoom//lib/spoom/version.rb#5
3203
+ Spoom::VERSION = T.let(T.unsafe(nil), String)