packwerk 2.2.2 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +2 -5
  3. data/.ruby-version +1 -1
  4. data/Gemfile +0 -1
  5. data/Gemfile.lock +5 -95
  6. data/README.md +2 -7
  7. data/RESOLVING_VIOLATIONS.md +7 -7
  8. data/TROUBLESHOOT.md +1 -23
  9. data/USAGE.md +149 -59
  10. data/dev.yml +1 -1
  11. data/exe/packwerk +1 -0
  12. data/gemfiles/Gemfile-rails-6-1 +1 -1
  13. data/lib/packwerk/application_validator.rb +54 -285
  14. data/lib/packwerk/association_inspector.rb +2 -0
  15. data/lib/packwerk/cache.rb +6 -5
  16. data/lib/packwerk/checker.rb +54 -0
  17. data/lib/packwerk/cli/result.rb +11 -0
  18. data/lib/packwerk/cli.rb +56 -31
  19. data/lib/packwerk/configuration.rb +61 -40
  20. data/lib/packwerk/const_node_inspector.rb +2 -0
  21. data/lib/packwerk/constant_context.rb +8 -0
  22. data/lib/packwerk/constant_discovery.rb +5 -6
  23. data/lib/packwerk/constant_name_inspector.rb +2 -0
  24. data/lib/packwerk/disable_sorbet.rb +41 -0
  25. data/lib/packwerk/extension_loader.rb +24 -0
  26. data/lib/packwerk/file_processor.rb +3 -1
  27. data/lib/packwerk/files_for_processing.rb +25 -12
  28. data/lib/packwerk/formatters/default_offenses_formatter.rb +77 -0
  29. data/lib/packwerk/formatters/progress_formatter.rb +31 -12
  30. data/lib/packwerk/generators/configuration_file.rb +7 -2
  31. data/lib/packwerk/generators/root_package.rb +5 -1
  32. data/lib/packwerk/generators/templates/package.yml +0 -10
  33. data/lib/packwerk/graph.rb +10 -2
  34. data/lib/packwerk/node.rb +1 -1
  35. data/lib/packwerk/node_helpers.rb +14 -7
  36. data/lib/packwerk/node_processor.rb +2 -0
  37. data/lib/packwerk/node_processor_factory.rb +6 -4
  38. data/lib/packwerk/node_visitor.rb +10 -1
  39. data/lib/packwerk/offense_collection.rb +43 -23
  40. data/lib/packwerk/offenses_formatter.rb +59 -2
  41. data/lib/packwerk/package.rb +7 -35
  42. data/lib/packwerk/package_set.rb +1 -1
  43. data/lib/packwerk/{deprecated_references.rb → package_todo.rb} +29 -13
  44. data/lib/packwerk/parse_run.rb +29 -36
  45. data/lib/packwerk/parsed_constant_definitions.rb +28 -5
  46. data/lib/packwerk/parsers/erb.rb +23 -4
  47. data/lib/packwerk/parsers/factory.rb +11 -2
  48. data/lib/packwerk/parsers/parser_interface.rb +1 -1
  49. data/lib/packwerk/parsers/ruby.rb +13 -3
  50. data/lib/packwerk/parsers.rb +6 -2
  51. data/lib/packwerk/{application_load_paths.rb → rails_load_paths.rb} +6 -4
  52. data/lib/packwerk/reference.rb +7 -1
  53. data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +29 -6
  54. data/lib/packwerk/reference_checking/reference_checker.rb +1 -1
  55. data/lib/packwerk/reference_extractor.rb +24 -12
  56. data/lib/packwerk/reference_offense.rb +2 -2
  57. data/lib/packwerk/run_context.rb +7 -10
  58. data/lib/packwerk/spring_command.rb +11 -2
  59. data/lib/packwerk/unresolved_reference.rb +9 -1
  60. data/lib/packwerk/validator/result.rb +18 -0
  61. data/lib/packwerk/validator.rb +90 -0
  62. data/lib/packwerk/validators/dependency_validator.rb +154 -0
  63. data/lib/packwerk/version.rb +1 -1
  64. data/lib/packwerk.rb +64 -26
  65. data/packwerk.gemspec +4 -2
  66. data/sorbet/rbi/gems/{zeitwerk@2.6.0.rbi → zeitwerk@2.6.4.rbi} +291 -228
  67. data/sorbet/rbi/shims/minitest/test.rb +8 -0
  68. data/sorbet/rbi/shims/packwerk/reference.rbi +33 -0
  69. data/sorbet/rbi/shims/packwerk/unresolved_reference.rbi +33 -0
  70. data/sorbet/rbi/shims/parser.rbi +13 -0
  71. metadata +35 -16
  72. data/lib/packwerk/formatters/offenses_formatter.rb +0 -52
  73. data/lib/packwerk/reference_checking/checkers/checker.rb +0 -34
  74. data/lib/packwerk/reference_checking/checkers/privacy_checker.rb +0 -76
  75. data/lib/packwerk/result.rb +0 -9
  76. data/lib/packwerk/sanity_checker.rb +0 -8
  77. data/lib/packwerk/violation_type.rb +0 -11
  78. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +0 -46
  79. data/sorbet/rbi/gems/mini_portile2@2.8.0.rbi +0 -8
@@ -4,32 +4,30 @@
4
4
  # This is an autogenerated file for types exported from the `zeitwerk` gem.
5
5
  # Please instead update this file by running `bin/tapioca gem zeitwerk`.
6
6
 
7
- # Kernel extensions for minitest
8
- #
9
- # source://zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:3
7
+ # source://zeitwerk-2.6.4/lib/zeitwerk/kernel.rb:3
10
8
  module Kernel
11
9
  private
12
10
 
13
- # source://zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:24
11
+ # source://zeitwerk-2.6.4/lib/zeitwerk/kernel.rb:27
14
12
  def require(path); end
15
13
 
16
14
  class << self
17
- # source://zeitwerk-2.6.0/lib/zeitwerk/kernel.rb:24
15
+ # source://zeitwerk-2.6.4/lib/zeitwerk/kernel.rb:27
18
16
  def require(path); end
19
17
  end
20
18
  end
21
19
 
22
- # source://zeitwerk-2.6.0/lib/zeitwerk.rb:3
20
+ # source://zeitwerk-2.6.4/lib/zeitwerk.rb:3
23
21
  module Zeitwerk
24
22
  class << self
25
23
  # This is a dangerous method.
26
24
  #
27
- # source://zeitwerk-2.6.0/lib/zeitwerk.rb:19
25
+ # source://zeitwerk-2.6.4/lib/zeitwerk.rb:20
28
26
  def with_loader; end
29
27
  end
30
28
  end
31
29
 
32
- # source://zeitwerk-2.6.0/lib/zeitwerk/error.rb:4
30
+ # source://zeitwerk-2.6.4/lib/zeitwerk/error.rb:4
33
31
  class Zeitwerk::Error < ::StandardError; end
34
32
 
35
33
  # Centralizes the logic for the trace point used to detect the creation of
@@ -40,7 +38,7 @@ class Zeitwerk::Error < ::StandardError; end
40
38
  # Loaders that reopen namespaces owned by other projects are responsible for
41
39
  # loading their constant before setup. This is documented.
42
40
  #
43
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:11
41
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:11
44
42
  module Zeitwerk::ExplicitNamespace
45
43
  extend ::Zeitwerk::RealModName
46
44
 
@@ -50,12 +48,12 @@ module Zeitwerk::ExplicitNamespace
50
48
  #
51
49
  # @private
52
50
  #
53
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:20
51
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:20
54
52
  def cpaths; end
55
53
 
56
54
  # @private
57
55
  #
58
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:24
56
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:24
59
57
  def mutex; end
60
58
 
61
59
  # Asserts `cpath` corresponds to an explicit namespace for which `loader`
@@ -63,66 +61,66 @@ module Zeitwerk::ExplicitNamespace
63
61
  #
64
62
  # @private
65
63
  #
66
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:35
64
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:35
67
65
  def register(cpath, loader); end
68
66
 
69
67
  # @private
70
68
  #
71
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:28
69
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:28
72
70
  def tracer; end
73
71
 
74
72
  # @private
75
73
  #
76
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:46
74
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:46
77
75
  def unregister_loader(loader); end
78
76
 
79
77
  private
80
78
 
81
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:54
79
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:54
82
80
  def disable_tracer_if_unneeded; end
83
81
 
84
- # source://zeitwerk-2.6.0/lib/zeitwerk/explicit_namespace.rb:61
82
+ # source://zeitwerk-2.6.4/lib/zeitwerk/explicit_namespace.rb:61
85
83
  def tracepoint_class_callback(event); end
86
84
  end
87
85
  end
88
86
 
89
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_inflector.rb:5
87
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_inflector.rb:5
90
88
  class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
91
89
  # @return [GemInflector] a new instance of GemInflector
92
90
  #
93
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_inflector.rb:6
91
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_inflector.rb:6
94
92
  def initialize(root_file); end
95
93
 
96
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_inflector.rb:13
94
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_inflector.rb:13
97
95
  def camelize(basename, abspath); end
98
96
  end
99
97
 
100
98
  # @private
101
99
  #
102
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_loader.rb:7
100
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_loader.rb:7
103
101
  class Zeitwerk::GemLoader < ::Zeitwerk::Loader
104
102
  # @return [GemLoader] a new instance of GemLoader
105
103
  #
106
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_loader.rb:17
104
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_loader.rb:17
107
105
  def initialize(root_file, warn_on_extra_files:); end
108
106
 
109
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_loader.rb:30
107
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_loader.rb:30
110
108
  def setup; end
111
109
 
112
110
  private
113
111
 
114
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_loader.rb:38
112
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_loader.rb:38
115
113
  def warn_on_extra_files; end
116
114
 
117
115
  class << self
118
116
  # @private
119
117
  #
120
- # source://zeitwerk-2.6.0/lib/zeitwerk/gem_loader.rb:12
118
+ # source://zeitwerk-2.6.4/lib/zeitwerk/gem_loader.rb:12
121
119
  def _new(root_file, warn_on_extra_files:); end
122
120
  end
123
121
  end
124
122
 
125
- # source://zeitwerk-2.6.0/lib/zeitwerk/inflector.rb:4
123
+ # source://zeitwerk-2.6.4/lib/zeitwerk/inflector.rb:4
126
124
  class Zeitwerk::Inflector
127
125
  # Very basic snake case -> camel case conversion.
128
126
  #
@@ -133,7 +131,7 @@ class Zeitwerk::Inflector
133
131
  #
134
132
  # Takes into account hard-coded mappings configured with `inflect`.
135
133
  #
136
- # source://zeitwerk-2.6.0/lib/zeitwerk/inflector.rb:15
134
+ # source://zeitwerk-2.6.4/lib/zeitwerk/inflector.rb:15
137
135
  def camelize(basename, _abspath); end
138
136
 
139
137
  # Configures hard-coded inflections:
@@ -148,7 +146,7 @@ class Zeitwerk::Inflector
148
146
  # inflector.camelize("mysql_adapter", abspath) # => "MySQLAdapter"
149
147
  # inflector.camelize("users_controller", abspath) # => "UsersController"
150
148
  #
151
- # source://zeitwerk-2.6.0/lib/zeitwerk/inflector.rb:32
149
+ # source://zeitwerk-2.6.4/lib/zeitwerk/inflector.rb:32
152
150
  def inflect(inflections); end
153
151
 
154
152
  private
@@ -156,20 +154,29 @@ class Zeitwerk::Inflector
156
154
  # Hard-coded basename to constant name user maps that override the default
157
155
  # inflection logic.
158
156
  #
159
- # source://zeitwerk-2.6.0/lib/zeitwerk/inflector.rb:42
157
+ # source://zeitwerk-2.6.4/lib/zeitwerk/inflector.rb:42
160
158
  def overrides; end
161
159
  end
162
160
 
163
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:6
161
+ # This is a private module.
162
+ #
163
+ # source://zeitwerk-2.6.4/lib/zeitwerk/internal.rb:4
164
+ module Zeitwerk::Internal
165
+ # source://zeitwerk-2.6.4/lib/zeitwerk/internal.rb:5
166
+ def internal(method_name); end
167
+ end
168
+
169
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:6
164
170
  class Zeitwerk::Loader
165
171
  include ::Zeitwerk::RealModName
166
172
  include ::Zeitwerk::Loader::Callbacks
167
173
  include ::Zeitwerk::Loader::Helpers
168
174
  include ::Zeitwerk::Loader::Config
175
+ include ::Zeitwerk::Loader::EagerLoad
169
176
 
170
177
  # @return [Loader] a new instance of Loader
171
178
  #
172
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:83
179
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:96
173
180
  def initialize; end
174
181
 
175
182
  # We keep track of autoloaded directories to remove them from the registry
@@ -180,7 +187,7 @@ class Zeitwerk::Loader
180
187
  #
181
188
  # @private
182
189
  #
183
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:39
190
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:41
184
191
  def autoloaded_dirs; end
185
192
 
186
193
  # Maps absolute paths for which an autoload has been set ---and not
@@ -193,19 +200,20 @@ class Zeitwerk::Loader
193
200
  #
194
201
  # @private
195
202
  #
196
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:29
203
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:31
197
204
  def autoloads; end
198
205
 
199
- # Eager loads all files in the root directories, recursively. Files do not
200
- # need to be in `$LOAD_PATH`, absolute file names are used. Ignored files
201
- # are not eager loaded. You can opt-out specifically in specific files and
202
- # directories with `do_not_eager_load`, and that can be overridden passing
203
- # `force: true`.
206
+ # @private
204
207
  #
205
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:218
206
- def eager_load(force: T.unsafe(nil)); end
208
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:90
209
+ def mutex; end
207
210
 
208
- # Maps constant paths of namespaces to arrays of corresponding directories.
211
+ # @private
212
+ #
213
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:94
214
+ def mutex2; end
215
+
216
+ # Maps namespace constant paths to their respective directories.
209
217
  #
210
218
  # For example, given this mapping:
211
219
  #
@@ -215,24 +223,14 @@ class Zeitwerk::Loader
215
223
  # ...
216
224
  # ]
217
225
  #
218
- # when `Admin` gets defined we know that it plays the role of a namespace and
219
- # that its children are spread over those directories. We'll visit them to set
220
- # up the corresponding autoloads.
221
- #
222
- # @private
223
- #
224
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:73
225
- def lazy_subdirs; end
226
-
227
- # @private
226
+ # when `Admin` gets defined we know that it plays the role of a namespace
227
+ # and that its children are spread over those directories. We'll visit them
228
+ # to set up the corresponding autoloads.
228
229
  #
229
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:77
230
- def mutex; end
231
-
232
230
  # @private
233
231
  #
234
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:81
235
- def mutex2; end
232
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:75
233
+ def namespace_dirs; end
236
234
 
237
235
  # Unloads all loaded code, and calls setup again so that the loader is able
238
236
  # to pick any changes in the file system.
@@ -242,14 +240,35 @@ class Zeitwerk::Loader
242
240
  #
243
241
  # @raise [Zeitwerk::Error]
244
242
  #
245
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:202
243
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:217
246
244
  def reload; end
247
245
 
248
246
  # Sets autoloads in the root namespace.
249
247
  #
250
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:101
248
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:115
251
249
  def setup; end
252
250
 
251
+ # The return value of this predicate is only meaningful if the loader has
252
+ # scanned the file. This is the case in the spots where we use it.
253
+ #
254
+ # @private
255
+ # @return [Boolean]
256
+ #
257
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:256
258
+ def shadowed_file?(file); end
259
+
260
+ # A shadowed file is a file managed by this loader that is ignored when
261
+ # setting autoloads because its matching constant is already taken.
262
+ #
263
+ # This private set is populated as we descend. For example, if the loader
264
+ # has only scanned the top-level, `shadowed_files` does not have shadowed
265
+ # files that may exist deep in the project tree yet.
266
+ #
267
+ # @private
268
+ #
269
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:86
270
+ def shadowed_files; end
271
+
253
272
  # Stores metadata needed for unloading. Its entries look like this:
254
273
  #
255
274
  # "Admin::Role" => [".../admin/role.rb", [Admin, :Role]]
@@ -264,7 +283,7 @@ class Zeitwerk::Loader
264
283
  #
265
284
  # @private
266
285
  #
267
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:55
286
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:57
268
287
  def to_unload; end
269
288
 
270
289
  # Removes loaded constants and configured autoloads.
@@ -278,7 +297,7 @@ class Zeitwerk::Loader
278
297
  # means `unload` + `setup`. This one is avaiable to be used together with
279
298
  # `unregister`, which is undocumented too.
280
299
  #
281
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:127
300
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:141
282
301
  def unload; end
283
302
 
284
303
  # Says if the given constant path would be unloaded on reload. This
@@ -286,84 +305,89 @@ class Zeitwerk::Loader
286
305
  #
287
306
  # @return [Boolean]
288
307
  #
289
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:267
308
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:230
290
309
  def unloadable_cpath?(cpath); end
291
310
 
292
311
  # Returns an array with the constant paths that would be unloaded on reload.
293
312
  # This predicate returns an empty array if reloading is disabled.
294
313
  #
295
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:275
314
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:238
296
315
  def unloadable_cpaths; end
297
316
 
298
317
  # This is a dangerous method.
299
318
  #
300
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:283
319
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:246
301
320
  def unregister; end
302
321
 
303
322
  private
304
323
 
305
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:397
324
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:370
306
325
  def autoload_file(parent, cname, file); end
307
326
 
308
327
  # @return [Boolean]
309
328
  #
310
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:453
329
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:428
311
330
  def autoload_path_set_by_me_for?(parent, cname); end
312
331
 
313
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:376
332
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:349
314
333
  def autoload_subdir(parent, cname, subdir); end
315
334
 
316
335
  # `dir` is the directory that would have autovivified a namespace. `file` is
317
336
  # the file where we've found the namespace is explicitly defined.
318
337
  #
319
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:421
338
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:396
320
339
  def promote_namespace_from_implicit_to_explicit(dir:, file:, parent:, cname:); end
321
340
 
322
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:467
341
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:442
323
342
  def raise_if_conflicting_directory(dir); end
324
343
 
325
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:462
344
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:437
326
345
  def register_explicit_namespace(cpath); end
327
346
 
328
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:491
347
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:467
329
348
  def run_on_unload_callbacks(cpath, value, abspath); end
330
349
 
331
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:432
350
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:407
332
351
  def set_autoload(parent, cname, abspath); end
333
352
 
334
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:333
353
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:314
335
354
  def set_autoloads_in_dir(dir, parent); end
336
355
 
337
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:498
356
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:474
338
357
  def unload_autoload(parent, cname); end
339
358
 
340
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:504
359
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:480
341
360
  def unload_cref(parent, cname); end
342
361
 
343
362
  class << self
344
363
  # Returns an array with the absolute paths of the root directories of all
345
364
  # registered loaders. This is a read-only collection.
346
365
  #
347
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:325
366
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:306
348
367
  def all_dirs; end
349
368
 
350
369
  # Returns the value of attribute default_logger.
351
370
  #
352
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:292
371
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:264
353
372
  def default_logger; end
354
373
 
355
374
  # Sets the attribute default_logger
356
375
  #
357
376
  # @param value the value to set the attribute default_logger to.
358
377
  #
359
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:292
378
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:264
360
379
  def default_logger=(_arg0); end
361
380
 
362
381
  # Broadcasts `eager_load` to all loaders.
363
382
  #
364
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:317
383
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:289
365
384
  def eager_load_all; end
366
385
 
386
+ # Broadcasts `eager_load_namespace` to all loaders.
387
+ #
388
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:296
389
+ def eager_load_namespace(mod); end
390
+
367
391
  # This is a shortcut for
368
392
  #
369
393
  # require "zeitwerk"
@@ -378,12 +402,12 @@ class Zeitwerk::Loader
378
402
  # This method returns a subclass of Zeitwerk::Loader, but the exact type
379
403
  # is private, client code can only rely on the interface.
380
404
  #
381
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:309
405
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:281
382
406
  def for_gem(warn_on_extra_files: T.unsafe(nil)); end
383
407
  end
384
408
  end
385
409
 
386
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/callbacks.rb:3
410
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/callbacks.rb:3
387
411
  module Zeitwerk::Loader::Callbacks
388
412
  include ::Zeitwerk::RealModName
389
413
 
@@ -392,14 +416,14 @@ module Zeitwerk::Loader::Callbacks
392
416
  #
393
417
  # @private
394
418
  #
395
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/callbacks.rb:34
419
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/callbacks.rb:34
396
420
  def on_dir_autoloaded(dir); end
397
421
 
398
422
  # Invoked from our decorated Kernel#require when a managed file is autoloaded.
399
423
  #
400
424
  # @private
401
425
  #
402
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/callbacks.rb:10
426
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/callbacks.rb:10
403
427
  def on_file_autoloaded(file); end
404
428
 
405
429
  # Invoked when a class or module is created or reopened, either from the
@@ -408,122 +432,88 @@ module Zeitwerk::Loader::Callbacks
408
432
  #
409
433
  # @private
410
434
  #
411
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/callbacks.rb:73
435
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/callbacks.rb:73
412
436
  def on_namespace_loaded(namespace); end
413
437
 
414
438
  private
415
439
 
416
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/callbacks.rb:84
440
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/callbacks.rb:84
417
441
  def run_on_load_callbacks(cpath, value, abspath); end
418
442
  end
419
443
 
420
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:6
444
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:6
421
445
  module Zeitwerk::Loader::Config
422
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:82
446
+ extend ::Zeitwerk::Internal
447
+
448
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:84
423
449
  def initialize; end
424
450
 
451
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:281
452
+ def __ignores?(abspath); end
453
+
454
+ def __roots; end
455
+
425
456
  # Configure directories or glob patterns to be collapsed.
426
457
  #
427
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:191
458
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:201
428
459
  def collapse(*glob_patterns); end
429
460
 
430
- # The actual collection of absolute directory names at the time the collapse
431
- # glob patterns were expanded. Computed on setup, and recomputed on reload.
432
- #
433
- # @private
434
- #
435
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:51
436
- def collapse_dirs; end
437
-
438
- # Absolute paths of directories or glob patterns to be collapsed.
439
- #
440
- # @private
461
+ # If `namespaces` is falsey (default), returns an array with the absolute
462
+ # paths of the root directories as strings. If truthy, returns a hash table
463
+ # instead. Keys are the absolute paths of the root directories as strings,
464
+ # values are their corresponding namespaces, class or module objects.
441
465
  #
442
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:44
443
- def collapse_glob_patterns; end
444
-
445
- # Absolute paths of the root directories. This is a read-only collection,
446
- # please push here via `push_dir`.
466
+ # These are read-only collections, please add to them with `push_dir`.
447
467
  #
448
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:143
449
- def dirs; end
468
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:149
469
+ def dirs(namespaces: T.unsafe(nil)); end
450
470
 
451
471
  # Let eager load ignore the given files or directories. The constants defined
452
472
  # in those files are still autoloadable.
453
473
  #
454
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:173
474
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:183
455
475
  def do_not_eager_load(*paths); end
456
476
 
457
- # Absolute paths of files or directories not to be eager loaded.
458
- #
459
- # @private
460
- #
461
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:57
462
- def eager_load_exclusions; end
463
-
464
477
  # You need to call this method before setup in order to be able to reload.
465
478
  # There is no way to undo this, either you want to reload or you don't.
466
479
  #
467
480
  # @raise [Zeitwerk::Error]
468
481
  #
469
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:152
482
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:162
470
483
  def enable_reloading; end
471
484
 
472
485
  # Configure files, directories, or glob patterns to be totally ignored.
473
486
  #
474
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:180
487
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:190
475
488
  def ignore(*glob_patterns); end
476
489
 
477
- # Absolute paths of files, directories, or glob patterns to be totally
478
- # ignored.
479
- #
480
- # @private
481
- #
482
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:30
483
- def ignored_glob_patterns; end
484
-
485
- # The actual collection of absolute file and directory names at the time the
486
- # ignored glob patterns were expanded. Computed on setup, and recomputed on
487
- # reload.
488
- #
489
- # @private
490
- #
491
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:38
492
- def ignored_paths; end
493
-
494
- # @private
495
- # @return [Boolean]
496
- #
497
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:269
498
- def ignores?(abspath); end
499
-
500
490
  # Returns the value of attribute inflector.
501
491
  #
502
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:23
492
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:10
503
493
  def inflector; end
504
494
 
505
495
  # Sets the attribute inflector
506
496
  #
507
497
  # @param value the value to set the attribute inflector to.
508
498
  #
509
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:23
499
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:10
510
500
  def inflector=(_arg0); end
511
501
 
512
502
  # Logs to `$stdout`, handy shortcut for debugging.
513
503
  #
514
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:263
504
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:273
515
505
  def log!; end
516
506
 
517
507
  # Returns the value of attribute logger.
518
508
  #
519
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:80
509
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:13
520
510
  def logger; end
521
511
 
522
512
  # Sets the attribute logger
523
513
  #
524
514
  # @param value the value to set the attribute logger to.
525
515
  #
526
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:80
516
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:13
527
517
  def logger=(_arg0); end
528
518
 
529
519
  # Configure a block to be invoked once a certain constant path is loaded.
@@ -542,29 +532,15 @@ module Zeitwerk::Loader::Config
542
532
  #
543
533
  # @raise [TypeError]
544
534
  #
545
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:227
535
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:237
546
536
  def on_load(cpath = T.unsafe(nil), &block); end
547
537
 
548
- # User-oriented callbacks to be fired when a constant is loaded.
549
- #
550
- # @private
551
- #
552
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:70
553
- def on_load_callbacks; end
554
-
555
538
  # Configure a block to be called after setup and on each reload.
556
539
  # If setup was already done, the block runs immediately.
557
540
  #
558
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:203
541
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:213
559
542
  def on_setup(&block); end
560
543
 
561
- # User-oriented callbacks to be fired on setup and on reload.
562
- #
563
- # @private
564
- #
565
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:63
566
- def on_setup_callbacks; end
567
-
568
544
  # Configure a block to be invoked right before a certain constant is removed.
569
545
  # Supports multiple callbacks, and if there are many, they are executed in the
570
546
  # order in which they were defined.
@@ -581,16 +557,9 @@ module Zeitwerk::Loader::Config
581
557
  #
582
558
  # @raise [TypeError]
583
559
  #
584
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:252
560
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:262
585
561
  def on_unload(cpath = T.unsafe(nil), &block); end
586
562
 
587
- # User-oriented callbacks to be fired before constants are removed.
588
- #
589
- # @private
590
- #
591
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:77
592
- def on_unload_callbacks; end
593
-
594
563
  # Pushes `path` to the list of root directories.
595
564
  #
596
565
  # Raises `Zeitwerk::Error` if `path` does not exist, or if another loader in
@@ -599,142 +568,236 @@ module Zeitwerk::Loader::Config
599
568
  #
600
569
  # @raise [Zeitwerk::Error]
601
570
  #
602
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:107
571
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:109
603
572
  def push_dir(path, namespace: T.unsafe(nil)); end
604
573
 
605
574
  # @return [Boolean]
606
575
  #
607
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:165
576
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:175
608
577
  def reloading_enabled?; end
609
578
 
610
- # Absolute paths of the root directories. Stored in a hash to preserve
611
- # order, easily handle duplicates, and also be able to have a fast lookup,
612
- # needed for detecting nested paths.
613
- #
614
- # "/Users/fxn/blog/app/assets" => true,
615
- # "/Users/fxn/blog/app/channels" => true,
616
- # ...
617
- #
618
- # This is a private collection maintained by the loader. The public
619
- # interface for it is `push_dir` and `dirs`.
620
- #
621
- # @private
622
- #
623
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:20
624
- def root_dirs; end
625
-
626
579
  # Returns the loader's tag.
627
580
  #
628
581
  # Implemented as a method instead of via attr_reader for symmetry with the
629
582
  # writer below.
630
583
  #
631
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:128
584
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:130
632
585
  def tag; end
633
586
 
634
587
  # Sets a tag for the loader, useful for logging.
635
588
  #
636
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:135
589
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:137
637
590
  def tag=(tag); end
638
591
 
639
592
  private
640
593
 
641
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:278
642
- def actual_root_dirs; end
594
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:294
595
+ def actual_roots; end
643
596
 
644
597
  # @return [Boolean]
645
598
  #
646
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:295
599
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:319
647
600
  def collapse?(dir); end
648
601
 
602
+ # The actual collection of absolute directory names at the time the collapse
603
+ # glob patterns were expanded. Computed on setup, and recomputed on reload.
604
+ #
605
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:55
606
+ def collapse_dirs; end
607
+
608
+ # Absolute paths of directories or glob patterns to be collapsed.
609
+ #
610
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:48
611
+ def collapse_glob_patterns; end
612
+
613
+ # Absolute paths of files or directories not to be eager loaded.
614
+ #
615
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:61
616
+ def eager_load_exclusions; end
617
+
649
618
  # @return [Boolean]
650
619
  #
651
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:290
620
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:306
652
621
  def excluded_from_eager_load?(abspath); end
653
622
 
654
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:305
623
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:329
655
624
  def expand_glob_patterns(glob_patterns); end
656
625
 
657
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:300
626
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:324
658
627
  def expand_paths(paths); end
659
628
 
660
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:317
629
+ # Absolute paths of files, directories, or glob patterns to be totally
630
+ # ignored.
631
+ #
632
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:34
633
+ def ignored_glob_patterns; end
634
+
635
+ # The actual collection of absolute file and directory names at the time the
636
+ # ignored glob patterns were expanded. Computed on setup, and recomputed on
637
+ # reload.
638
+ #
639
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:42
640
+ def ignored_paths; end
641
+
642
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:281
643
+ def ignores?(abspath); end
644
+
645
+ # User-oriented callbacks to be fired when a constant is loaded.
646
+ #
647
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:74
648
+ def on_load_callbacks; end
649
+
650
+ # User-oriented callbacks to be fired on setup and on reload.
651
+ #
652
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:67
653
+ def on_setup_callbacks; end
654
+
655
+ # User-oriented callbacks to be fired before constants are removed.
656
+ #
657
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:81
658
+ def on_unload_callbacks; end
659
+
660
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:341
661
661
  def recompute_collapse_dirs; end
662
662
 
663
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:312
663
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:336
664
664
  def recompute_ignored_paths; end
665
665
 
666
666
  # @return [Boolean]
667
667
  #
668
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/config.rb:285
668
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:301
669
669
  def root_dir?(dir); end
670
+
671
+ # Absolute paths of the root directories. Stored in a hash to preserve order,
672
+ # easily handle duplicates, have a fast lookup needed for detecting nested
673
+ # paths, and store namespaces as values.
674
+ #
675
+ # "/Users/fxn/blog/app/channels" => Object,
676
+ # "/Users/fxn/blog/app/adapters" => ActiveJob::QueueAdapters,
677
+ # ...
678
+ #
679
+ # This is a private collection maintained by the loader. The public
680
+ # interface for it is `push_dir` and `dirs`.
681
+ #
682
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/config.rb:27
683
+ def roots; end
670
684
  end
671
685
 
672
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:3
686
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:1
687
+ module Zeitwerk::Loader::EagerLoad
688
+ # Eager loads all files in the root directories, recursively. Files do not
689
+ # need to be in `$LOAD_PATH`, absolute file names are used. Ignored and
690
+ # shadowed files are not eager loaded. You can opt-out specifically in
691
+ # specific files and directories with `do_not_eager_load`, and that can be
692
+ # overridden passing `force: true`.
693
+ #
694
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:9
695
+ def eager_load(force: T.unsafe(nil)); end
696
+
697
+ # @raise [Zeitwerk::Error]
698
+ #
699
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:31
700
+ def eager_load_dir(path); end
701
+
702
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:69
703
+ def eager_load_namespace(mod); end
704
+
705
+ # Loads the given Ruby file.
706
+ #
707
+ # Raises if the argument is ignored, shadowed, or not managed by the receiver.
708
+ #
709
+ # The method is implemented as `constantize` for files, in a sense, to be able
710
+ # to descend orderly and make sure the file is loadable.
711
+ #
712
+ # @raise [Zeitwerk::Error]
713
+ #
714
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:109
715
+ def load_file(path); end
716
+
717
+ private
718
+
719
+ # The caller is responsible for making sure `namespace` is the namespace that
720
+ # corresponds to `dir`.
721
+ #
722
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:149
723
+ def actual_eager_load_dir(dir, namespace, force: T.unsafe(nil)); end
724
+
725
+ # In order to invoke this method, the caller has to ensure `child` is a
726
+ # strict namespace descendendant of `root_namespace`.
727
+ #
728
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/eager_load.rb:184
729
+ def eager_load_child_namespace(child, child_name, root_dir, root_namespace); end
730
+ end
731
+
732
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:3
673
733
  module Zeitwerk::Loader::Helpers
674
734
  private
675
735
 
676
736
  # @return [Boolean]
677
737
  #
678
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:120
738
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:130
679
739
  def cdef?(parent, cname); end
680
740
 
681
741
  # @raise [NameError]
682
742
  #
683
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:126
743
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:136
684
744
  def cget(parent, cname); end
685
745
 
686
746
  # Symbol#name was introduced in Ruby 3.0. It returns always the same
687
747
  # frozen object, so we may save a few string allocations.
688
748
  #
689
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:114
749
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:120
690
750
  def cpath(parent, cname); end
691
751
 
692
752
  # @return [Boolean]
693
753
  #
694
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:68
754
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:69
695
755
  def dir?(path); end
696
756
 
697
757
  # @return [Boolean]
698
758
  #
699
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:46
759
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:47
700
760
  def has_at_least_one_ruby_file?(dir); end
701
761
 
702
762
  # @return [Boolean]
703
763
  #
704
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:73
764
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:74
705
765
  def hidden?(basename); end
706
766
 
707
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:9
767
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:9
708
768
  def log(message); end
709
769
 
710
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:17
770
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:17
711
771
  def ls(dir); end
712
772
 
713
773
  # @return [Boolean]
714
774
  #
715
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:63
775
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:64
716
776
  def ruby?(path); end
717
777
 
718
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader/helpers.rb:101
778
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:111
719
779
  def strict_autoload_path(parent, cname); end
780
+
781
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader/helpers.rb:79
782
+ def walk_up(abspath); end
720
783
  end
721
784
 
722
- # source://zeitwerk-2.6.0/lib/zeitwerk/loader.rb:16
785
+ # source://zeitwerk-2.6.4/lib/zeitwerk/loader.rb:18
723
786
  Zeitwerk::Loader::MUTEX = T.let(T.unsafe(nil), Thread::Mutex)
724
787
 
725
- # source://zeitwerk-2.6.0/lib/zeitwerk/error.rb:13
788
+ # source://zeitwerk-2.6.4/lib/zeitwerk/error.rb:13
726
789
  class Zeitwerk::NameError < ::NameError; end
727
790
 
728
- # source://zeitwerk-2.6.0/lib/zeitwerk/real_mod_name.rb:3
791
+ # source://zeitwerk-2.6.4/lib/zeitwerk/real_mod_name.rb:3
729
792
  module Zeitwerk::RealModName
730
- # source://zeitwerk-2.6.0/lib/zeitwerk/real_mod_name.rb:14
793
+ # source://zeitwerk-2.6.4/lib/zeitwerk/real_mod_name.rb:14
731
794
  def real_mod_name(mod); end
732
795
  end
733
796
 
734
- # source://zeitwerk-2.6.0/lib/zeitwerk/real_mod_name.rb:4
797
+ # source://zeitwerk-2.6.4/lib/zeitwerk/real_mod_name.rb:4
735
798
  Zeitwerk::RealModName::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)
736
799
 
737
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:4
800
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:4
738
801
  module Zeitwerk::Registry
739
802
  class << self
740
803
  # Maps absolute paths to the loaders responsible for them.
@@ -744,20 +807,20 @@ module Zeitwerk::Registry
744
807
  #
745
808
  # @private
746
809
  #
747
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:26
810
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:26
748
811
  def autoloads; end
749
812
 
750
813
  # Registers gem loaders to let `for_gem` be idempotent in case of reload.
751
814
  #
752
815
  # @private
753
816
  #
754
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:17
817
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:17
755
818
  def gem_loaders_by_root_file; end
756
819
 
757
820
  # @private
758
821
  # @return [Boolean]
759
822
  #
760
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:113
823
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:113
761
824
  def inception?(cpath); end
762
825
 
763
826
  # This hash table addresses an edge case in which an autoload is ignored.
@@ -797,12 +860,12 @@ module Zeitwerk::Registry
797
860
  #
798
861
  # @private
799
862
  #
800
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:65
863
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:65
801
864
  def inceptions; end
802
865
 
803
866
  # @private
804
867
  #
805
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:121
868
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:121
806
869
  def loader_for(path); end
807
870
 
808
871
  # This method returns always a loader, the same instance for the same root
@@ -810,7 +873,7 @@ module Zeitwerk::Registry
810
873
  #
811
874
  # @private
812
875
  #
813
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:89
876
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:89
814
877
  def loader_for_gem(root_file, warn_on_extra_files:); end
815
878
 
816
879
  # Keeps track of all loaders. Useful to broadcast messages and to prevent
@@ -818,50 +881,50 @@ module Zeitwerk::Registry
818
881
  #
819
882
  # @private
820
883
  #
821
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:11
884
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:11
822
885
  def loaders; end
823
886
 
824
887
  # @private
825
888
  #
826
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:127
889
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:127
827
890
  def on_unload(loader); end
828
891
 
829
892
  # @private
830
893
  #
831
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:95
894
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:95
832
895
  def register_autoload(loader, abspath); end
833
896
 
834
897
  # @private
835
898
  #
836
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:107
899
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:107
837
900
  def register_inception(cpath, abspath, loader); end
838
901
 
839
902
  # Registers a loader.
840
903
  #
841
904
  # @private
842
905
  #
843
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:71
906
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:71
844
907
  def register_loader(loader); end
845
908
 
846
909
  # @private
847
910
  #
848
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:101
911
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:101
849
912
  def unregister_autoload(abspath); end
850
913
 
851
914
  # @private
852
915
  #
853
- # source://zeitwerk-2.6.0/lib/zeitwerk/registry.rb:77
916
+ # source://zeitwerk-2.6.4/lib/zeitwerk/registry.rb:77
854
917
  def unregister_loader(loader); end
855
918
  end
856
919
  end
857
920
 
858
- # source://zeitwerk-2.6.0/lib/zeitwerk/error.rb:7
921
+ # source://zeitwerk-2.6.4/lib/zeitwerk/error.rb:7
859
922
  class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
860
923
  # @return [ReloadingDisabledError] a new instance of ReloadingDisabledError
861
924
  #
862
- # source://zeitwerk-2.6.0/lib/zeitwerk/error.rb:8
925
+ # source://zeitwerk-2.6.4/lib/zeitwerk/error.rb:8
863
926
  def initialize; end
864
927
  end
865
928
 
866
- # source://zeitwerk-2.6.0/lib/zeitwerk/version.rb:4
929
+ # source://zeitwerk-2.6.4/lib/zeitwerk/version.rb:4
867
930
  Zeitwerk::VERSION = T.let(T.unsafe(nil), String)