web-author 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 (101) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +5 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +234 -0
  6. data/Rakefile +12 -0
  7. data/lib/web_author/author/strategies/author_from_ld_schema.rb +54 -0
  8. data/lib/web_author/author/strategies/author_from_meta.rb +16 -0
  9. data/lib/web_author/author/strategy.rb +25 -0
  10. data/lib/web_author/json_ld_schema_processor.rb +46 -0
  11. data/lib/web_author/ld_author.rb +30 -0
  12. data/lib/web_author/ld_schema.rb +74 -0
  13. data/lib/web_author/page.rb +54 -0
  14. data/lib/web_author/version.rb +5 -0
  15. data/lib/web_author.rb +14 -0
  16. data/sig/webauthor.rbs +4 -0
  17. data/sorbet/config +4 -0
  18. data/sorbet/rbi/annotations/.gitattributes +1 -0
  19. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  20. data/sorbet/rbi/annotations/mocha.rbi +34 -0
  21. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  22. data/sorbet/rbi/annotations/webmock.rbi +9 -0
  23. data/sorbet/rbi/gems/.gitattributes +1 -0
  24. data/sorbet/rbi/gems/addressable.rbi +203 -0
  25. data/sorbet/rbi/gems/addressable@2.8.7.rbi +1994 -0
  26. data/sorbet/rbi/gems/ast.rbi +49 -0
  27. data/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
  28. data/sorbet/rbi/gems/benchmark@0.4.0.rbi +618 -0
  29. data/sorbet/rbi/gems/bigdecimal.rbi +86 -0
  30. data/sorbet/rbi/gems/bigdecimal@3.1.9.rbi +8 -0
  31. data/sorbet/rbi/gems/crack.rbi +62 -0
  32. data/sorbet/rbi/gems/crack@1.0.0.rbi +145 -0
  33. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  34. data/sorbet/rbi/gems/hashdiff.rbi +66 -0
  35. data/sorbet/rbi/gems/hashdiff@1.1.2.rbi +353 -0
  36. data/sorbet/rbi/gems/json@2.10.2.rbi +2112 -0
  37. data/sorbet/rbi/gems/language_server-protocol.rbi +2868 -0
  38. data/sorbet/rbi/gems/language_server-protocol@3.17.0.4.rbi +9 -0
  39. data/sorbet/rbi/gems/lint_roller.rbi +75 -0
  40. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +240 -0
  41. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  42. data/sorbet/rbi/gems/minitest.rbi +440 -0
  43. data/sorbet/rbi/gems/minitest@5.25.5.rbi +1547 -0
  44. data/sorbet/rbi/gems/mocha.rbi +653 -0
  45. data/sorbet/rbi/gems/mocha@2.7.1.rbi +12 -0
  46. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  47. data/sorbet/rbi/gems/nokogiri-1.18.6-arm64.rbi +1135 -0
  48. data/sorbet/rbi/gems/parallel.rbi +88 -0
  49. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  50. data/sorbet/rbi/gems/parser.rbi +1544 -0
  51. data/sorbet/rbi/gems/parser@3.3.7.3.rbi +5532 -0
  52. data/sorbet/rbi/gems/prism.rbi +4090 -0
  53. data/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
  54. data/sorbet/rbi/gems/public_suffix.rbi +105 -0
  55. data/sorbet/rbi/gems/public_suffix@6.0.1.rbi +936 -0
  56. data/sorbet/rbi/gems/racc.rbi +15 -0
  57. data/sorbet/rbi/gems/racc@1.8.1.rbi +160 -0
  58. data/sorbet/rbi/gems/rainbow.rbi +122 -0
  59. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  60. data/sorbet/rbi/gems/rake.rbi +650 -0
  61. data/sorbet/rbi/gems/rake@13.2.1.rbi +3033 -0
  62. data/sorbet/rbi/gems/rbi@0.3.1.rbi +6599 -0
  63. data/sorbet/rbi/gems/rbs@3.9.2.rbi +6978 -0
  64. data/sorbet/rbi/gems/rdoc.rbi +555 -0
  65. data/sorbet/rbi/gems/regexp_parser.rbi +1039 -0
  66. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3795 -0
  67. data/sorbet/rbi/gems/rexml.rbi +637 -0
  68. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5346 -0
  69. data/sorbet/rbi/gems/rubocop-ast.rbi +1470 -0
  70. data/sorbet/rbi/gems/rubocop-ast@1.43.0.rbi +7765 -0
  71. data/sorbet/rbi/gems/rubocop-minitest.rbi +450 -0
  72. data/sorbet/rbi/gems/rubocop-minitest@0.37.1.rbi +2609 -0
  73. data/sorbet/rbi/gems/rubocop-performance.rbi +593 -0
  74. data/sorbet/rbi/gems/rubocop-performance@1.24.0.rbi +3359 -0
  75. data/sorbet/rbi/gems/rubocop-rake.rbi +87 -0
  76. data/sorbet/rbi/gems/rubocop-rake@0.7.1.rbi +328 -0
  77. data/sorbet/rbi/gems/rubocop-rubycw.rbi +40 -0
  78. data/sorbet/rbi/gems/rubocop-rubycw@0.2.2.rbi +91 -0
  79. data/sorbet/rbi/gems/rubocop.rbi +10554 -0
  80. data/sorbet/rbi/gems/rubocop@1.75.1.rbi +61875 -0
  81. data/sorbet/rbi/gems/ruby-progressbar.rbi +321 -0
  82. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  83. data/sorbet/rbi/gems/ruby2_keywords@0.0.5.rbi +9 -0
  84. data/sorbet/rbi/gems/spoom@1.6.1.rbi +7274 -0
  85. data/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
  86. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  87. data/sorbet/rbi/gems/unicode-display_width.rbi +28 -0
  88. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +132 -0
  89. data/sorbet/rbi/gems/unicode-emoji.rbi +18 -0
  90. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +251 -0
  91. data/sorbet/rbi/gems/web_author.rbi +20 -0
  92. data/sorbet/rbi/gems/webmock.rbi +512 -0
  93. data/sorbet/rbi/gems/webmock@3.25.1.rbi +1792 -0
  94. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  95. data/sorbet/rbi/gems/yard.rbi +36 -0
  96. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  97. data/sorbet/rbi/gems/zeitwerk.rbi +240 -0
  98. data/sorbet/rbi/gems/zeitwerk@2.7.2.rbi +1141 -0
  99. data/sorbet/tapioca/config.yml +13 -0
  100. data/sorbet/tapioca/require.rb +4 -0
  101. metadata +188 -0
@@ -0,0 +1,1141 @@
1
+ # typed: false
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `zeitwerk` gem.
5
+ # Please instead update this file by running `bin/tapioca gem zeitwerk`.
6
+
7
+
8
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#3
9
+ module Kernel
10
+ private
11
+
12
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#23
13
+ def require(path); end
14
+
15
+ class << self
16
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#23
17
+ def require(path); end
18
+ end
19
+ end
20
+
21
+ class Module
22
+ include ::Zeitwerk::ConstAdded
23
+ end
24
+
25
+ # source://zeitwerk//lib/zeitwerk.rb#3
26
+ module Zeitwerk
27
+ class << self
28
+ # This is a dangerous method.
29
+ #
30
+ # source://zeitwerk//lib/zeitwerk.rb#23
31
+ def with_loader; end
32
+ end
33
+ end
34
+
35
+ # source://zeitwerk//lib/zeitwerk/core_ext/module.rb#3
36
+ module Zeitwerk::ConstAdded
37
+ # source://zeitwerk//lib/zeitwerk/core_ext/module.rb#5
38
+ def const_added(cname); end
39
+ end
40
+
41
+ # This private class encapsulates pairs (mod, cname).
42
+ #
43
+ # Objects represent the constant cname in the class or module object mod, and
44
+ # have API to manage them. Examples:
45
+ #
46
+ # cref.path
47
+ # cref.set(value)
48
+ # cref.get
49
+ #
50
+ # The constant may or may not exist in mod.
51
+ #
52
+ # source://zeitwerk//lib/zeitwerk/cref.rb#13
53
+ class Zeitwerk::Cref
54
+ include ::Zeitwerk::RealModName
55
+
56
+ # The type of the first argument is Module because Class < Module, class
57
+ # objects are also valid.
58
+ #
59
+ # @return [Cref] a new instance of Cref
60
+ #
61
+ # source://zeitwerk//lib/zeitwerk/cref.rb#28
62
+ def initialize(mod, cname); end
63
+
64
+ # source://zeitwerk//lib/zeitwerk/cref.rb#46
65
+ def autoload(abspath); end
66
+
67
+ # @return [Boolean]
68
+ #
69
+ # source://zeitwerk//lib/zeitwerk/cref.rb#41
70
+ def autoload?; end
71
+
72
+ # Returns the value of attribute cname.
73
+ #
74
+ # source://zeitwerk//lib/zeitwerk/cref.rb#22
75
+ def cname; end
76
+
77
+ # @return [Boolean]
78
+ #
79
+ # source://zeitwerk//lib/zeitwerk/cref.rb#51
80
+ def defined?; end
81
+
82
+ # @raise [NameError]
83
+ #
84
+ # source://zeitwerk//lib/zeitwerk/cref.rb#62
85
+ def get; end
86
+
87
+ # Returns the value of attribute mod.
88
+ #
89
+ # source://zeitwerk//lib/zeitwerk/cref.rb#19
90
+ def mod; end
91
+
92
+ # source://zeitwerk//lib/zeitwerk/cref.rb#35
93
+ def path; end
94
+
95
+ # @raise [NameError]
96
+ #
97
+ # source://zeitwerk//lib/zeitwerk/cref.rb#68
98
+ def remove; end
99
+
100
+ # source://zeitwerk//lib/zeitwerk/cref.rb#56
101
+ def set(value); end
102
+
103
+ # source://zeitwerk//lib/zeitwerk/cref.rb#35
104
+ def to_s; end
105
+ end
106
+
107
+ # This class emulates a hash table whose keys are of type Zeitwerk::Cref.
108
+ #
109
+ # It is a synchronized 2-level hash. The keys of the top one, stored in `@map`,
110
+ # are class and module objects, but their hash code is forced to be their object
111
+ # IDs (see why below). Then, each one of them stores a hash table keyed on
112
+ # constant names as symbols. We finally store the values in those.
113
+ #
114
+ # For example, if we store values 0, 1, and 2 for the crefs that would
115
+ # correspond to `M::X`, `M::Y`, and `N::Z`, the map will look like this:
116
+ #
117
+ # { M => { X: 0, :Y => 1 }, N => { Z: 2 } }
118
+ #
119
+ # This structure is internal, so only the needed interface is implemented.
120
+ #
121
+ # Why not use tables that map pairs [Module, Symbol] to their values? Because
122
+ # class and module objects are not guaranteed to be hashable, the `hash` method
123
+ # may have been overridden:
124
+ #
125
+ # https://github.com/fxn/zeitwerk/issues/188
126
+ #
127
+ # We can also use a 1-level hash whose keys are the corresponding class and
128
+ # module names. In the example above it would be:
129
+ #
130
+ # { "M::X" => 0, "M::Y" => 1, "N::Z" => 2 }
131
+ #
132
+ # The gem used this approach for several years.
133
+ #
134
+ # Another option would be to make crefs hashable. I tried with hash code
135
+ #
136
+ # real_mod_hash(mod) ^ cname.hash
137
+ #
138
+ # and the matching eql?, but that was about 1.8x slower.
139
+ #
140
+ # Finally, I came with this solution which is 1.6x faster than the previous one
141
+ # based on class and module names, even being synchronized. Also, client code
142
+ # feels natural, since crefs are central objects in Zeitwerk's implementation.
143
+ #
144
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#39
145
+ class Zeitwerk::Cref::Map
146
+ # @return [Map] a new instance of Map
147
+ #
148
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#40
149
+ def initialize; end
150
+
151
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#55
152
+ def [](cref); end
153
+
154
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#47
155
+ def []=(cref, value); end
156
+
157
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#112
158
+ def clear; end
159
+
160
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#70
161
+ def delete(cref); end
162
+
163
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#89
164
+ def delete_by_value(value); end
165
+
166
+ # Ad-hoc for loader_for, called from const_added. That is a hot path, I prefer
167
+ # to not create a cref in every call, since that is global.
168
+ #
169
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#78
170
+ def delete_mod_cname(mod, cname); end
171
+
172
+ # Order of yielded crefs is undefined.
173
+ #
174
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#101
175
+ def each_key; end
176
+
177
+ # @return [Boolean]
178
+ #
179
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#119
180
+ def empty?; end
181
+
182
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#62
183
+ def get_or_set(cref, &block); end
184
+ end
185
+
186
+ # source://zeitwerk//lib/zeitwerk/error.rb#4
187
+ class Zeitwerk::Error < ::StandardError; end
188
+
189
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#4
190
+ class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
191
+ # @return [GemInflector] a new instance of GemInflector
192
+ #
193
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#6
194
+ def initialize(root_file); end
195
+
196
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#13
197
+ def camelize(basename, abspath); end
198
+ end
199
+
200
+ # @private
201
+ #
202
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#5
203
+ class Zeitwerk::GemLoader < ::Zeitwerk::Loader
204
+ # @return [GemLoader] a new instance of GemLoader
205
+ #
206
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#19
207
+ def initialize(root_file, namespace:, warn_on_extra_files:); end
208
+
209
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#34
210
+ def setup; end
211
+
212
+ private
213
+
214
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#42
215
+ def warn_on_extra_files; end
216
+
217
+ class << self
218
+ # @private
219
+ #
220
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#14
221
+ def __new(root_file, namespace:, warn_on_extra_files:); end
222
+
223
+ private
224
+
225
+ def new(*_arg0); end
226
+ end
227
+ end
228
+
229
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#4
230
+ class Zeitwerk::Inflector
231
+ # Very basic snake case -> camel case conversion.
232
+ #
233
+ # inflector = Zeitwerk::Inflector.new
234
+ # inflector.camelize("post", ...) # => "Post"
235
+ # inflector.camelize("users_controller", ...) # => "UsersController"
236
+ # inflector.camelize("api", ...) # => "Api"
237
+ #
238
+ # Takes into account hard-coded mappings configured with `inflect`.
239
+ #
240
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#15
241
+ def camelize(basename, _abspath); end
242
+
243
+ # Configures hard-coded inflections:
244
+ #
245
+ # inflector = Zeitwerk::Inflector.new
246
+ # inflector.inflect(
247
+ # "html_parser" => "HTMLParser",
248
+ # "mysql_adapter" => "MySQLAdapter"
249
+ # )
250
+ #
251
+ # inflector.camelize("html_parser", abspath) # => "HTMLParser"
252
+ # inflector.camelize("mysql_adapter", abspath) # => "MySQLAdapter"
253
+ # inflector.camelize("users_controller", abspath) # => "UsersController"
254
+ #
255
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#32
256
+ def inflect(inflections); end
257
+
258
+ private
259
+
260
+ # Hard-coded basename to constant name user maps that override the default
261
+ # inflection logic.
262
+ #
263
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#42
264
+ def overrides; end
265
+ end
266
+
267
+ # This is a private module.
268
+ #
269
+ # source://zeitwerk//lib/zeitwerk/internal.rb#4
270
+ module Zeitwerk::Internal
271
+ # source://zeitwerk//lib/zeitwerk/internal.rb#6
272
+ def internal(method_name); end
273
+ end
274
+
275
+ # source://zeitwerk//lib/zeitwerk/loader.rb#7
276
+ class Zeitwerk::Loader
277
+ include ::Zeitwerk::RealModName
278
+ include ::Zeitwerk::Loader::Callbacks
279
+ include ::Zeitwerk::Loader::Helpers
280
+ include ::Zeitwerk::Loader::Config
281
+ include ::Zeitwerk::Loader::EagerLoad
282
+ extend ::Zeitwerk::Internal
283
+ extend ::Zeitwerk::RealModName
284
+
285
+ # @return [Loader] a new instance of Loader
286
+ #
287
+ # source://zeitwerk//lib/zeitwerk/loader.rb#107
288
+ def initialize; end
289
+
290
+ # source://zeitwerk//lib/zeitwerk/loader.rb#66
291
+ def __autoloaded_dirs; end
292
+
293
+ # source://zeitwerk//lib/zeitwerk/loader.rb#32
294
+ def __autoloads; end
295
+
296
+ # source://zeitwerk//lib/zeitwerk/loader.rb#56
297
+ def __inceptions; end
298
+
299
+ # source://zeitwerk//lib/zeitwerk/loader.rb#85
300
+ def __namespace_dirs; end
301
+
302
+ # source://zeitwerk//lib/zeitwerk/loader.rb#361
303
+ def __shadowed_file?(file); end
304
+
305
+ # source://zeitwerk//lib/zeitwerk/loader.rb#96
306
+ def __shadowed_files; end
307
+
308
+ # source://zeitwerk//lib/zeitwerk/loader.rb#76
309
+ def __to_unload; end
310
+
311
+ # Returns a hash that maps the absolute paths of the managed files and
312
+ # directories to their respective expected constant paths.
313
+ #
314
+ # source://zeitwerk//lib/zeitwerk/loader.rb#248
315
+ def all_expected_cpaths; end
316
+
317
+ # @raise [Zeitwerk::Error]
318
+ #
319
+ # source://zeitwerk//lib/zeitwerk/loader.rb#278
320
+ def cpath_expected_at(path); end
321
+
322
+ # Unloads all loaded code, and calls setup again so that the loader is able
323
+ # to pick any changes in the file system.
324
+ #
325
+ # This method is not thread-safe, please see how this can be achieved by
326
+ # client code in the README of the project.
327
+ #
328
+ # @raise [Zeitwerk::Error]
329
+ #
330
+ # source://zeitwerk//lib/zeitwerk/loader.rb#234
331
+ def reload; end
332
+
333
+ # Sets autoloads in the root namespaces.
334
+ #
335
+ # source://zeitwerk//lib/zeitwerk/loader.rb#128
336
+ def setup; end
337
+
338
+ # Removes loaded constants and configured autoloads.
339
+ #
340
+ # The objects the constants stored are no longer reachable through them. In
341
+ # addition, since said objects are normally not referenced from anywhere
342
+ # else, they are eligible for garbage collection, which would effectively
343
+ # unload them.
344
+ #
345
+ # This method is public but undocumented. Main interface is `reload`, which
346
+ # means `unload` + `setup`. This one is available to be used together with
347
+ # `unregister`, which is undocumented too.
348
+ #
349
+ # source://zeitwerk//lib/zeitwerk/loader.rb#154
350
+ def unload; end
351
+
352
+ # Says if the given constant path would be unloaded on reload. This
353
+ # predicate returns `false` if reloading is disabled.
354
+ #
355
+ # This is an undocumented method that I wrote to help transition from the
356
+ # classic autoloader in Rails. Its usage was removed from Rails in 7.0.
357
+ #
358
+ # @return [Boolean]
359
+ #
360
+ # source://zeitwerk//lib/zeitwerk/loader.rb#332
361
+ def unloadable_cpath?(cpath); end
362
+
363
+ # Returns an array with the constant paths that would be unloaded on reload.
364
+ # This predicate returns an empty array if reloading is disabled.
365
+ #
366
+ # This is an undocumented method that I wrote to help transition from the
367
+ # classic autoloader in Rails. Its usage was removed from Rails in 7.0.
368
+ #
369
+ # source://zeitwerk//lib/zeitwerk/loader.rb#343
370
+ def unloadable_cpaths; end
371
+
372
+ # This is a dangerous method.
373
+ #
374
+ # source://zeitwerk//lib/zeitwerk/loader.rb#351
375
+ def unregister; end
376
+
377
+ private
378
+
379
+ # source://zeitwerk//lib/zeitwerk/loader.rb#508
380
+ def autoload_file(cref, file); end
381
+
382
+ # @return [Boolean]
383
+ #
384
+ # source://zeitwerk//lib/zeitwerk/loader.rb#560
385
+ def autoload_path_set_by_me_for?(cref); end
386
+
387
+ # source://zeitwerk//lib/zeitwerk/loader.rb#479
388
+ def autoload_subdir(cref, subdir); end
389
+
390
+ # We keep track of autoloaded directories to remove them from the registry
391
+ # at the end of eager loading.
392
+ #
393
+ # Files are removed as they are autoloaded, but directories need to wait due
394
+ # to concurrency (see why in Zeitwerk::Loader::Callbacks#on_dir_autoloaded).
395
+ #
396
+ # source://zeitwerk//lib/zeitwerk/loader.rb#66
397
+ def autoloaded_dirs; end
398
+
399
+ # Maps absolute paths for which an autoload has been set ---and not
400
+ # executed--- to their corresponding Zeitwerk::Cref object.
401
+ #
402
+ # "/Users/fxn/blog/app/models/user.rb" => #<Zeitwerk::Cref:... @mod=Object, @cname=:User, ...>,
403
+ # "/Users/fxn/blog/app/models/hotel/pricing.rb" => #<Zeitwerk::Cref:... @mod=Hotel, @cname=:Pricing, ...>,
404
+ # ...
405
+ #
406
+ # source://zeitwerk//lib/zeitwerk/loader.rb#32
407
+ def autoloads; end
408
+
409
+ # source://zeitwerk//lib/zeitwerk/loader.rb#542
410
+ def define_autoload(cref, abspath); end
411
+
412
+ # source://zeitwerk//lib/zeitwerk/loader.rb#461
413
+ def define_autoloads_for_dir(dir, parent); end
414
+
415
+ # Returns the value of attribute dirs_autoload_monitor.
416
+ #
417
+ # source://zeitwerk//lib/zeitwerk/loader.rb#104
418
+ def dirs_autoload_monitor; end
419
+
420
+ # When the path passed to Module#autoload is in the stack of features being
421
+ # loaded at the moment, Ruby passes. For example, Module#autoload? returns
422
+ # `nil` even if the autoload has not been attempted. See
423
+ #
424
+ # https://bugs.ruby-lang.org/issues/21035
425
+ #
426
+ # We call these "inceptions".
427
+ #
428
+ # A common case is the entry point of gems managed by Zeitwerk. Their main
429
+ # file is normally required and, while doing so, the loader sets an autoload
430
+ # on the gem namespace. That autoload hits this edge case.
431
+ #
432
+ # There is some logic that neeeds to know if an autoload for a given
433
+ # constant already exists. We check Module#autoload? first, and fallback to
434
+ # the inceptions just in case.
435
+ #
436
+ # This map keeps track of pairs (cref, autoload_path) found by the loader.
437
+ # The module Zeitwerk::Registry::Inceptions, on the other hand, acts as a
438
+ # global registry for them.
439
+ #
440
+ # source://zeitwerk//lib/zeitwerk/loader.rb#56
441
+ def inceptions; end
442
+
443
+ # Returns the value of attribute mutex.
444
+ #
445
+ # source://zeitwerk//lib/zeitwerk/loader.rb#100
446
+ def mutex; end
447
+
448
+ # Maps namespace crefs to the directories that conform the namespace.
449
+ #
450
+ # When these crefs get defined we know their children are spread over those
451
+ # directories. We'll visit them to set up the corresponding autoloads.
452
+ #
453
+ # source://zeitwerk//lib/zeitwerk/loader.rb#85
454
+ def namespace_dirs; end
455
+
456
+ # `dir` is the directory that would have autovivified a namespace. `file` is
457
+ # the file where we've found the namespace is explicitly defined.
458
+ #
459
+ # source://zeitwerk//lib/zeitwerk/loader.rb#529
460
+ def promote_namespace_from_implicit_to_explicit(dir:, file:, cref:); end
461
+
462
+ # source://zeitwerk//lib/zeitwerk/loader.rb#593
463
+ def raise_if_conflicting_directory(dir); end
464
+
465
+ # source://zeitwerk//lib/zeitwerk/loader.rb#569
466
+ def register_explicit_namespace(cref); end
467
+
468
+ # source://zeitwerk//lib/zeitwerk/loader.rb#579
469
+ def register_inception(cref, abspath); end
470
+
471
+ # source://zeitwerk//lib/zeitwerk/loader.rb#617
472
+ def run_on_unload_callbacks(cref, value, abspath); end
473
+
474
+ # source://zeitwerk//lib/zeitwerk/loader.rb#361
475
+ def shadowed_file?(file); end
476
+
477
+ # A shadowed file is a file managed by this loader that is ignored when
478
+ # setting autoloads because its matching constant is already taken.
479
+ #
480
+ # This private set is populated lazily, as we descend. For example, if the
481
+ # loader has only scanned the top-level, `shadowed_files` does not have the
482
+ # shadowed files that may exist deep in the project tree.
483
+ #
484
+ # source://zeitwerk//lib/zeitwerk/loader.rb#96
485
+ def shadowed_files; end
486
+
487
+ # If reloading is enabled, this collection maps autoload paths to their
488
+ # autoloaded crefs.
489
+ #
490
+ # On unload, the autoload paths are passed to callbacks, files deleted from
491
+ # $LOADED_FEATURES, and the crefs are deleted.
492
+ #
493
+ # source://zeitwerk//lib/zeitwerk/loader.rb#76
494
+ def to_unload; end
495
+
496
+ # source://zeitwerk//lib/zeitwerk/loader.rb#624
497
+ def unload_autoload(cref); end
498
+
499
+ # source://zeitwerk//lib/zeitwerk/loader.rb#630
500
+ def unload_cref(cref); end
501
+
502
+ # source://zeitwerk//lib/zeitwerk/loader.rb#574
503
+ def unregister_explicit_namespaces; end
504
+
505
+ # source://zeitwerk//lib/zeitwerk/loader.rb#585
506
+ def unregister_inceptions; end
507
+
508
+ class << self
509
+ # Returns an array with the absolute paths of the root directories of all
510
+ # registered loaders. This is a read-only collection.
511
+ #
512
+ # source://zeitwerk//lib/zeitwerk/loader.rb#455
513
+ def all_dirs; end
514
+
515
+ # Returns the value of attribute default_logger.
516
+ #
517
+ # source://zeitwerk//lib/zeitwerk/loader.rb#371
518
+ def default_logger; end
519
+
520
+ # Sets the attribute default_logger
521
+ #
522
+ # @param value the value to set the attribute default_logger to.
523
+ #
524
+ # source://zeitwerk//lib/zeitwerk/loader.rb#371
525
+ def default_logger=(_arg0); end
526
+
527
+ # Broadcasts `eager_load` to all loaders. Those that have not been setup
528
+ # are skipped.
529
+ #
530
+ # source://zeitwerk//lib/zeitwerk/loader.rb#427
531
+ def eager_load_all; end
532
+
533
+ # Broadcasts `eager_load_namespace` to all loaders. Those that have not
534
+ # been setup are skipped.
535
+ #
536
+ # source://zeitwerk//lib/zeitwerk/loader.rb#441
537
+ def eager_load_namespace(mod); end
538
+
539
+ # This is a shortcut for
540
+ #
541
+ # require "zeitwerk"
542
+ #
543
+ # loader = Zeitwerk::Loader.new
544
+ # loader.tag = File.basename(__FILE__, ".rb")
545
+ # loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
546
+ # loader.push_dir(__dir__)
547
+ #
548
+ # except that this method returns the same object in subsequent calls from
549
+ # the same file, in the unlikely case the gem wants to be able to reload.
550
+ #
551
+ # This method returns a subclass of Zeitwerk::Loader, but the exact type
552
+ # is private, client code can only rely on the interface.
553
+ #
554
+ # source://zeitwerk//lib/zeitwerk/loader.rb#389
555
+ def for_gem(warn_on_extra_files: T.unsafe(nil)); end
556
+
557
+ # This is a shortcut for
558
+ #
559
+ # require "zeitwerk"
560
+ #
561
+ # loader = Zeitwerk::Loader.new
562
+ # loader.tag = namespace.name + "-" + File.basename(__FILE__, ".rb")
563
+ # loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
564
+ # loader.push_dir(__dir__, namespace: namespace)
565
+ #
566
+ # except that this method returns the same object in subsequent calls from
567
+ # the same file, in the unlikely case the gem wants to be able to reload.
568
+ #
569
+ # This method returns a subclass of Zeitwerk::Loader, but the exact type
570
+ # is private, client code can only rely on the interface.
571
+ #
572
+ # source://zeitwerk//lib/zeitwerk/loader.rb#410
573
+ def for_gem_extension(namespace); end
574
+ end
575
+ end
576
+
577
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#3
578
+ module Zeitwerk::Loader::Callbacks
579
+ extend ::Zeitwerk::Internal
580
+
581
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
582
+ def __on_dir_autoloaded(dir); end
583
+
584
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
585
+ def __on_file_autoloaded(file); end
586
+
587
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#79
588
+ def __on_namespace_loaded(cref, namespace); end
589
+
590
+ private
591
+
592
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
593
+ def on_dir_autoloaded(dir); end
594
+
595
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
596
+ def on_file_autoloaded(file); end
597
+
598
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#79
599
+ def on_namespace_loaded(cref, namespace); end
600
+
601
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#90
602
+ def run_on_load_callbacks(cpath, value, abspath); end
603
+ end
604
+
605
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#6
606
+ module Zeitwerk::Loader::Config
607
+ include ::Zeitwerk::RealModName
608
+ extend ::Zeitwerk::Internal
609
+
610
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#86
611
+ def initialize; end
612
+
613
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#296
614
+ def __ignores?(abspath); end
615
+
616
+ def __roots; end
617
+
618
+ # Configure directories or glob patterns to be collapsed.
619
+ #
620
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#216
621
+ def collapse(*glob_patterns); end
622
+
623
+ # If `namespaces` is falsey (default), returns an array with the absolute
624
+ # paths of the root directories as strings. If truthy, returns a hash table
625
+ # instead. Keys are the absolute paths of the root directories as strings,
626
+ # values are their corresponding namespaces, class or module objects.
627
+ #
628
+ # If `ignored` is falsey (default), ignored root directories are filtered out.
629
+ #
630
+ # These are read-only collections, please add to them with `push_dir`.
631
+ #
632
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#156
633
+ def dirs(namespaces: T.unsafe(nil), ignored: T.unsafe(nil)); end
634
+
635
+ # Let eager load ignore the given files or directories. The constants defined
636
+ # in those files are still autoloadable.
637
+ #
638
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#198
639
+ def do_not_eager_load(*paths); end
640
+
641
+ # You need to call this method before setup in order to be able to reload.
642
+ # There is no way to undo this, either you want to reload or you don't.
643
+ #
644
+ # @raise [Zeitwerk::Error]
645
+ #
646
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#177
647
+ def enable_reloading; end
648
+
649
+ # Configure files, directories, or glob patterns to be totally ignored.
650
+ #
651
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#205
652
+ def ignore(*glob_patterns); end
653
+
654
+ # Returns the value of attribute inflector.
655
+ #
656
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#11
657
+ def inflector; end
658
+
659
+ # Sets the attribute inflector
660
+ #
661
+ # @param value the value to set the attribute inflector to.
662
+ #
663
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#11
664
+ def inflector=(_arg0); end
665
+
666
+ # Logs to `$stdout`, handy shortcut for debugging.
667
+ #
668
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#288
669
+ def log!; end
670
+
671
+ # Returns the value of attribute logger.
672
+ #
673
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
674
+ def logger; end
675
+
676
+ # Sets the attribute logger
677
+ #
678
+ # @param value the value to set the attribute logger to.
679
+ #
680
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
681
+ def logger=(_arg0); end
682
+
683
+ # Configure a block to be invoked once a certain constant path is loaded.
684
+ # Supports multiple callbacks, and if there are many, they are executed in
685
+ # the order in which they were defined.
686
+ #
687
+ # loader.on_load("SomeApiClient") do |klass, _abspath|
688
+ # klass.endpoint = "https://api.dev"
689
+ # end
690
+ #
691
+ # Can also be configured for any constant loaded:
692
+ #
693
+ # loader.on_load do |cpath, value, abspath|
694
+ # # ...
695
+ # end
696
+ #
697
+ # @raise [TypeError]
698
+ #
699
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#252
700
+ def on_load(cpath = T.unsafe(nil), &block); end
701
+
702
+ # Configure a block to be called after setup and on each reload.
703
+ # If setup was already done, the block runs immediately.
704
+ #
705
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#228
706
+ def on_setup(&block); end
707
+
708
+ # Configure a block to be invoked right before a certain constant is removed.
709
+ # Supports multiple callbacks, and if there are many, they are executed in the
710
+ # order in which they were defined.
711
+ #
712
+ # loader.on_unload("Country") do |klass, _abspath|
713
+ # klass.clear_cache
714
+ # end
715
+ #
716
+ # Can also be configured for any removed constant:
717
+ #
718
+ # loader.on_unload do |cpath, value, abspath|
719
+ # # ...
720
+ # end
721
+ #
722
+ # @raise [TypeError]
723
+ #
724
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#277
725
+ def on_unload(cpath = T.unsafe(nil), &block); end
726
+
727
+ # Pushes `path` to the list of root directories.
728
+ #
729
+ # Raises `Zeitwerk::Error` if `path` does not exist, or if another loader in
730
+ # the same process already manages that directory or one of its ascendants or
731
+ # descendants.
732
+ #
733
+ # @raise [Zeitwerk::Error]
734
+ #
735
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#111
736
+ def push_dir(path, namespace: T.unsafe(nil)); end
737
+
738
+ # @return [Boolean]
739
+ #
740
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#190
741
+ def reloading_enabled?; end
742
+
743
+ # Returns the loader's tag.
744
+ #
745
+ # Implemented as a method instead of via attr_reader for symmetry with the
746
+ # writer below.
747
+ #
748
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#135
749
+ def tag; end
750
+
751
+ # Sets a tag for the loader, useful for logging.
752
+ #
753
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#142
754
+ def tag=(tag); end
755
+
756
+ private
757
+
758
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#314
759
+ def actual_roots; end
760
+
761
+ # @return [Boolean]
762
+ #
763
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#339
764
+ def collapse?(dir); end
765
+
766
+ # The actual collection of absolute directory names at the time the collapse
767
+ # glob patterns were expanded. Computed on setup, and recomputed on reload.
768
+ #
769
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#57
770
+ def collapse_dirs; end
771
+
772
+ # Absolute paths of directories or glob patterns to be collapsed.
773
+ #
774
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#50
775
+ def collapse_glob_patterns; end
776
+
777
+ # Absolute paths of files or directories not to be eager loaded.
778
+ #
779
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#63
780
+ def eager_load_exclusions; end
781
+
782
+ # @return [Boolean]
783
+ #
784
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#326
785
+ def excluded_from_eager_load?(abspath); end
786
+
787
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#349
788
+ def expand_glob_patterns(glob_patterns); end
789
+
790
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#344
791
+ def expand_paths(paths); end
792
+
793
+ # Absolute paths of files, directories, or glob patterns to be totally
794
+ # ignored.
795
+ #
796
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#36
797
+ def ignored_glob_patterns; end
798
+
799
+ # @return [Boolean]
800
+ #
801
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#309
802
+ def ignored_path?(abspath); end
803
+
804
+ # The actual collection of absolute file and directory names at the time the
805
+ # ignored glob patterns were expanded. Computed on setup, and recomputed on
806
+ # reload.
807
+ #
808
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#44
809
+ def ignored_paths; end
810
+
811
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#296
812
+ def ignores?(abspath); end
813
+
814
+ # User-oriented callbacks to be fired when a constant is loaded.
815
+ #
816
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#76
817
+ def on_load_callbacks; end
818
+
819
+ # User-oriented callbacks to be fired on setup and on reload.
820
+ #
821
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#69
822
+ def on_setup_callbacks; end
823
+
824
+ # User-oriented callbacks to be fired before constants are removed.
825
+ #
826
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#83
827
+ def on_unload_callbacks; end
828
+
829
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#361
830
+ def recompute_collapse_dirs; end
831
+
832
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#356
833
+ def recompute_ignored_paths; end
834
+
835
+ # @return [Boolean]
836
+ #
837
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#321
838
+ def root_dir?(dir); end
839
+
840
+ # Absolute paths of the root directories, mapped to their respective root namespaces:
841
+ #
842
+ # "/Users/fxn/blog/app/channels" => Object,
843
+ # "/Users/fxn/blog/app/adapters" => ActiveJob::QueueAdapters,
844
+ # ...
845
+ #
846
+ # Stored in a hash to preserve order, easily handle duplicates, and have a
847
+ # fast lookup by directory.
848
+ #
849
+ # This is a private collection maintained by the loader. The public
850
+ # interface for it is `push_dir` and `dirs`.
851
+ #
852
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#29
853
+ def roots; end
854
+ end
855
+
856
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#1
857
+ module Zeitwerk::Loader::EagerLoad
858
+ # Eager loads all files in the root directories, recursively. Files do not
859
+ # need to be in `$LOAD_PATH`, absolute file names are used. Ignored and
860
+ # shadowed files are not eager loaded. You can opt-out specifically in
861
+ # specific files and directories with `do_not_eager_load`, and that can be
862
+ # overridden passing `force: true`.
863
+ #
864
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#9
865
+ def eager_load(force: T.unsafe(nil)); end
866
+
867
+ # @raise [Zeitwerk::SetupRequired]
868
+ #
869
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#32
870
+ def eager_load_dir(path); end
871
+
872
+ # @raise [Zeitwerk::SetupRequired]
873
+ #
874
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#74
875
+ def eager_load_namespace(mod); end
876
+
877
+ # Loads the given Ruby file.
878
+ #
879
+ # Raises if the argument is ignored, shadowed, or not managed by the receiver.
880
+ #
881
+ # The method is implemented as `constantize` for files, in a sense, to be able
882
+ # to descend orderly and make sure the file is loadable.
883
+ #
884
+ # @raise [Zeitwerk::Error]
885
+ #
886
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#116
887
+ def load_file(path); end
888
+
889
+ private
890
+
891
+ # The caller is responsible for making sure `namespace` is the namespace that
892
+ # corresponds to `dir`.
893
+ #
894
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#160
895
+ def actual_eager_load_dir(dir, namespace, force: T.unsafe(nil)); end
896
+
897
+ # In order to invoke this method, the caller has to ensure `child` is a
898
+ # strict namespace descendant of `root_namespace`.
899
+ #
900
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#193
901
+ def eager_load_child_namespace(child, child_name, root_dir, root_namespace); end
902
+ end
903
+
904
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#3
905
+ module Zeitwerk::Loader::Helpers
906
+ private
907
+
908
+ # @raise [Zeitwerk::NameError]
909
+ #
910
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#108
911
+ def cname_for(basename, abspath); end
912
+
913
+ # @return [Boolean]
914
+ #
915
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#83
916
+ def dir?(path); end
917
+
918
+ # Looks for a Ruby file using breadth-first search. This type of search is
919
+ # important to list as less directories as possible and return fast in the
920
+ # common case in which there are Ruby files.
921
+ #
922
+ # @return [Boolean]
923
+ #
924
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#56
925
+ def has_at_least_one_ruby_file?(dir); end
926
+
927
+ # @return [Boolean]
928
+ #
929
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#88
930
+ def hidden?(basename); end
931
+
932
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#7
933
+ def log(message); end
934
+
935
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#15
936
+ def ls(dir); end
937
+
938
+ # @return [Boolean]
939
+ #
940
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#78
941
+ def ruby?(path); end
942
+
943
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#93
944
+ def walk_up(abspath); end
945
+ end
946
+
947
+ # --- Inflection --------------------------------------------------------------------------------
948
+ #
949
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#103
950
+ module Zeitwerk::Loader::Helpers::CNAME_VALIDATOR; end
951
+
952
+ # source://zeitwerk//lib/zeitwerk/loader.rb#21
953
+ Zeitwerk::Loader::MUTEX = T.let(T.unsafe(nil), Thread::Mutex)
954
+
955
+ # source://zeitwerk//lib/zeitwerk/error.rb#13
956
+ class Zeitwerk::NameError < ::NameError; end
957
+
958
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#1
959
+ class Zeitwerk::NullInflector
960
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#3
961
+ def camelize(basename, _abspath); end
962
+ end
963
+
964
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#3
965
+ module Zeitwerk::RealModName
966
+ # Returns the real name of the class or module, as set after the first
967
+ # constant to which it was assigned (or nil).
968
+ #
969
+ # The name method can be overridden, hence the indirection in this method.
970
+ #
971
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#13
972
+ def real_mod_name(mod); end
973
+ end
974
+
975
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#4
976
+ Zeitwerk::RealModName::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)
977
+
978
+ # source://zeitwerk//lib/zeitwerk/registry.rb#4
979
+ module Zeitwerk::Registry
980
+ class << self
981
+ # Maps absolute paths to the loaders responsible for them.
982
+ #
983
+ # This information is used by our decorated `Kernel#require` to be able to
984
+ # invoke callbacks and autovivify modules.
985
+ #
986
+ # @private
987
+ #
988
+ # source://zeitwerk//lib/zeitwerk/registry.rb#29
989
+ def autoloads; end
990
+
991
+ # Registers gem loaders to let `for_gem` be idempotent in case of reload.
992
+ #
993
+ # @private
994
+ #
995
+ # source://zeitwerk//lib/zeitwerk/registry.rb#20
996
+ def gem_loaders_by_root_file; end
997
+
998
+ # @private
999
+ #
1000
+ # source://zeitwerk//lib/zeitwerk/registry.rb#70
1001
+ def loader_for(path); end
1002
+
1003
+ # This method returns always a loader, the same instance for the same root
1004
+ # file. That is how Zeitwerk::Loader.for_gem is idempotent.
1005
+ #
1006
+ # @private
1007
+ #
1008
+ # source://zeitwerk//lib/zeitwerk/registry.rb#52
1009
+ def loader_for_gem(root_file, namespace:, warn_on_extra_files:); end
1010
+
1011
+ # Keeps track of all loaders. Useful to broadcast messages and to prevent
1012
+ # them from being garbage collected.
1013
+ #
1014
+ # @private
1015
+ #
1016
+ # source://zeitwerk//lib/zeitwerk/registry.rb#14
1017
+ def loaders; end
1018
+
1019
+ # @private
1020
+ #
1021
+ # source://zeitwerk//lib/zeitwerk/registry.rb#76
1022
+ def on_unload(loader); end
1023
+
1024
+ # @private
1025
+ #
1026
+ # source://zeitwerk//lib/zeitwerk/registry.rb#58
1027
+ def register_autoload(loader, abspath); end
1028
+
1029
+ # Registers a loader.
1030
+ #
1031
+ # @private
1032
+ #
1033
+ # source://zeitwerk//lib/zeitwerk/registry.rb#35
1034
+ def register_loader(loader); end
1035
+
1036
+ # @private
1037
+ #
1038
+ # source://zeitwerk//lib/zeitwerk/registry.rb#64
1039
+ def unregister_autoload(abspath); end
1040
+
1041
+ # @private
1042
+ #
1043
+ # source://zeitwerk//lib/zeitwerk/registry.rb#41
1044
+ def unregister_loader(loader); end
1045
+ end
1046
+ end
1047
+
1048
+ # This module is a registry for explicit namespaces.
1049
+ #
1050
+ # When a loader determines that a certain file should define an explicit
1051
+ # namespace, it registers it here, associating its cref with itself.
1052
+ #
1053
+ # If the namespace is autoloaded, our const_added callback retrieves its
1054
+ # loader by calling loader_for. That way, the loader is able to scan the
1055
+ # subdirectories that conform the namespace and set autoloads for their
1056
+ # expected constants just in time.
1057
+ #
1058
+ # Once autoloaded, the namespace is unregistered.
1059
+ #
1060
+ # The implementation assumes an explicit namespace is managed by one loader.
1061
+ # Loaders that reopen namespaces owned by other projects are responsible for
1062
+ # loading their constant before setup. This is documented.
1063
+ #
1064
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#19
1065
+ module Zeitwerk::Registry::ExplicitNamespaces
1066
+ class << self
1067
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#59
1068
+ def __clear; end
1069
+
1070
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#40
1071
+ def __loader_for(mod, cname); end
1072
+
1073
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#35
1074
+ def __register(cref, loader); end
1075
+
1076
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#52
1077
+ def __registered?(cref); end
1078
+
1079
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#45
1080
+ def __unregister_loader(loader); end
1081
+
1082
+ private
1083
+
1084
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#59
1085
+ def clear; end
1086
+
1087
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#40
1088
+ def loader_for(mod, cname); end
1089
+
1090
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#35
1091
+ def register(cref, loader); end
1092
+
1093
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#52
1094
+ def registered?(cref); end
1095
+
1096
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#45
1097
+ def unregister_loader(loader); end
1098
+ end
1099
+ end
1100
+
1101
+ # Loaders know their own inceptions, but there is a use case in which we need
1102
+ # to know if a given cpath is an inception globally. This is what this
1103
+ # registry is for.
1104
+ #
1105
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#5
1106
+ module Zeitwerk::Registry::Inceptions
1107
+ class << self
1108
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#26
1109
+ def clear; end
1110
+
1111
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#11
1112
+ def register(cref, autoload_path); end
1113
+
1114
+ # @return [Boolean]
1115
+ #
1116
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#16
1117
+ def registered?(cref); end
1118
+
1119
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#21
1120
+ def unregister(cref); end
1121
+ end
1122
+ end
1123
+
1124
+ # source://zeitwerk//lib/zeitwerk/error.rb#7
1125
+ class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
1126
+ # @return [ReloadingDisabledError] a new instance of ReloadingDisabledError
1127
+ #
1128
+ # source://zeitwerk//lib/zeitwerk/error.rb#8
1129
+ def initialize; end
1130
+ end
1131
+
1132
+ # source://zeitwerk//lib/zeitwerk/error.rb#16
1133
+ class Zeitwerk::SetupRequired < ::Zeitwerk::Error
1134
+ # @return [SetupRequired] a new instance of SetupRequired
1135
+ #
1136
+ # source://zeitwerk//lib/zeitwerk/error.rb#17
1137
+ def initialize; end
1138
+ end
1139
+
1140
+ # source://zeitwerk//lib/zeitwerk/version.rb#4
1141
+ Zeitwerk::VERSION = T.let(T.unsafe(nil), String)