packwerk 2.3.0 → 3.0.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 (78) 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/TROUBLESHOOT.md +0 -22
  8. data/USAGE.md +141 -51
  9. data/dev.yml +1 -1
  10. data/exe/packwerk +1 -0
  11. data/gemfiles/Gemfile-rails-6-1 +1 -1
  12. data/lib/packwerk/application_validator.rb +54 -285
  13. data/lib/packwerk/association_inspector.rb +2 -0
  14. data/lib/packwerk/cache.rb +6 -5
  15. data/lib/packwerk/checker.rb +54 -0
  16. data/lib/packwerk/cli/result.rb +11 -0
  17. data/lib/packwerk/cli.rb +55 -40
  18. data/lib/packwerk/configuration.rb +61 -40
  19. data/lib/packwerk/const_node_inspector.rb +2 -0
  20. data/lib/packwerk/constant_context.rb +8 -0
  21. data/lib/packwerk/constant_discovery.rb +5 -6
  22. data/lib/packwerk/constant_name_inspector.rb +2 -0
  23. data/lib/packwerk/disable_sorbet.rb +41 -0
  24. data/lib/packwerk/extension_loader.rb +24 -0
  25. data/lib/packwerk/file_processor.rb +3 -1
  26. data/lib/packwerk/files_for_processing.rb +25 -12
  27. data/lib/packwerk/formatters/default_offenses_formatter.rb +77 -0
  28. data/lib/packwerk/formatters/progress_formatter.rb +31 -12
  29. data/lib/packwerk/generators/configuration_file.rb +7 -2
  30. data/lib/packwerk/generators/root_package.rb +5 -1
  31. data/lib/packwerk/generators/templates/package.yml +0 -10
  32. data/lib/packwerk/graph.rb +10 -2
  33. data/lib/packwerk/node.rb +1 -1
  34. data/lib/packwerk/node_helpers.rb +14 -7
  35. data/lib/packwerk/node_processor.rb +2 -0
  36. data/lib/packwerk/node_processor_factory.rb +6 -4
  37. data/lib/packwerk/node_visitor.rb +10 -1
  38. data/lib/packwerk/offense_collection.rb +26 -18
  39. data/lib/packwerk/offenses_formatter.rb +59 -2
  40. data/lib/packwerk/package.rb +7 -35
  41. data/lib/packwerk/package_set.rb +1 -1
  42. data/lib/packwerk/package_todo.rb +15 -9
  43. data/lib/packwerk/parse_run.rb +27 -34
  44. data/lib/packwerk/parsed_constant_definitions.rb +28 -5
  45. data/lib/packwerk/parsers/erb.rb +23 -4
  46. data/lib/packwerk/parsers/factory.rb +11 -2
  47. data/lib/packwerk/parsers/parser_interface.rb +1 -1
  48. data/lib/packwerk/parsers/ruby.rb +13 -3
  49. data/lib/packwerk/parsers.rb +6 -2
  50. data/lib/packwerk/{application_load_paths.rb → rails_load_paths.rb} +6 -4
  51. data/lib/packwerk/reference.rb +7 -1
  52. data/lib/packwerk/reference_checking/checkers/dependency_checker.rb +29 -6
  53. data/lib/packwerk/reference_checking/reference_checker.rb +1 -1
  54. data/lib/packwerk/reference_extractor.rb +24 -12
  55. data/lib/packwerk/reference_offense.rb +2 -2
  56. data/lib/packwerk/run_context.rb +7 -10
  57. data/lib/packwerk/spring_command.rb +11 -2
  58. data/lib/packwerk/unresolved_reference.rb +9 -1
  59. data/lib/packwerk/validator/result.rb +18 -0
  60. data/lib/packwerk/validator.rb +90 -0
  61. data/lib/packwerk/validators/dependency_validator.rb +154 -0
  62. data/lib/packwerk/version.rb +1 -1
  63. data/lib/packwerk.rb +64 -26
  64. data/packwerk.gemspec +4 -2
  65. data/sorbet/rbi/gems/{zeitwerk@2.6.0.rbi → zeitwerk@2.6.4.rbi} +291 -228
  66. data/sorbet/rbi/shims/minitest/test.rb +8 -0
  67. data/sorbet/rbi/shims/packwerk/reference.rbi +33 -0
  68. data/sorbet/rbi/shims/packwerk/unresolved_reference.rbi +33 -0
  69. data/sorbet/rbi/shims/parser.rbi +13 -0
  70. metadata +34 -15
  71. data/lib/packwerk/formatters/offenses_formatter.rb +0 -52
  72. data/lib/packwerk/reference_checking/checkers/checker.rb +0 -34
  73. data/lib/packwerk/reference_checking/checkers/privacy_checker.rb +0 -76
  74. data/lib/packwerk/result.rb +0 -9
  75. data/lib/packwerk/sanity_checker.rb +0 -8
  76. data/lib/packwerk/violation_type.rb +0 -11
  77. data/sorbet/rbi/gems/html_tokenizer@0.0.7.rbi +0 -46
  78. 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)