konstruo 1.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 (126) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +22 -0
  4. data/.tool-versions +1 -0
  5. data/CHANGELOG.md +21 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +35 -0
  8. data/Rakefile +10 -0
  9. data/lib/konstruo/mapper.rb +120 -0
  10. data/lib/konstruo/version.rb +6 -0
  11. data/lib/konstruo.rb +18 -0
  12. data/sorbet/config +4 -0
  13. data/sorbet/rbi/annotations/.gitattributes +1 -0
  14. data/sorbet/rbi/annotations/actionmailer.rbi +10 -0
  15. data/sorbet/rbi/annotations/actionpack.rbi +430 -0
  16. data/sorbet/rbi/annotations/actionview.rbi +75 -0
  17. data/sorbet/rbi/annotations/activejob.rbi +44 -0
  18. data/sorbet/rbi/annotations/activemodel.rbi +89 -0
  19. data/sorbet/rbi/annotations/activerecord.rbi +92 -0
  20. data/sorbet/rbi/annotations/activesupport.rbi +454 -0
  21. data/sorbet/rbi/annotations/globalid.rbi +30 -0
  22. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  23. data/sorbet/rbi/annotations/railties.rbi +61 -0
  24. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  25. data/sorbet/rbi/dsl/.gitattributes +1 -0
  26. data/sorbet/rbi/dsl/active_support/callbacks.rbi +23 -0
  27. data/sorbet/rbi/gems/.gitattributes +1 -0
  28. data/sorbet/rbi/gems/actioncable@7.2.1.rbi +3096 -0
  29. data/sorbet/rbi/gems/actionmailbox@7.2.1.rbi +1832 -0
  30. data/sorbet/rbi/gems/actionmailer@7.2.1.rbi +2664 -0
  31. data/sorbet/rbi/gems/actionpack@7.2.1.rbi +20536 -0
  32. data/sorbet/rbi/gems/actiontext@7.2.1.rbi +1697 -0
  33. data/sorbet/rbi/gems/actionview@7.2.1.rbi +15752 -0
  34. data/sorbet/rbi/gems/activejob@7.2.1.rbi +2828 -0
  35. data/sorbet/rbi/gems/activemodel@7.2.1.rbi +6762 -0
  36. data/sorbet/rbi/gems/activerecord@7.2.1.rbi +41433 -0
  37. data/sorbet/rbi/gems/activestorage@7.2.1.rbi +3247 -0
  38. data/sorbet/rbi/gems/activesupport@7.2.1.rbi +21142 -0
  39. data/sorbet/rbi/gems/ast@2.4.2.rbi +585 -0
  40. data/sorbet/rbi/gems/base64@0.2.0.rbi +509 -0
  41. data/sorbet/rbi/gems/bigdecimal@3.1.8.rbi +78 -0
  42. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  43. data/sorbet/rbi/gems/concurrent-ruby@1.3.4.rbi +11645 -0
  44. data/sorbet/rbi/gems/connection_pool@2.4.1.rbi +9 -0
  45. data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
  46. data/sorbet/rbi/gems/dashbrains-rubocop-config@1.0.4.rbi +9 -0
  47. data/sorbet/rbi/gems/date@3.3.4.rbi +75 -0
  48. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
  49. data/sorbet/rbi/gems/drb@2.2.1.rbi +1347 -0
  50. data/sorbet/rbi/gems/erubi@1.13.0.rbi +150 -0
  51. data/sorbet/rbi/gems/globalid@1.2.1.rbi +749 -0
  52. data/sorbet/rbi/gems/i18n@1.14.5.rbi +2359 -0
  53. data/sorbet/rbi/gems/io-console@0.7.2.rbi +9 -0
  54. data/sorbet/rbi/gems/json@2.7.2.rbi +1562 -0
  55. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14238 -0
  56. data/sorbet/rbi/gems/logger@1.6.1.rbi +920 -0
  57. data/sorbet/rbi/gems/loofah@2.22.0.rbi +1081 -0
  58. data/sorbet/rbi/gems/mail@2.8.1.rbi +8658 -0
  59. data/sorbet/rbi/gems/marcel@1.0.4.rbi +239 -0
  60. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +173 -0
  61. data/sorbet/rbi/gems/minitest@5.25.1.rbi +1546 -0
  62. data/sorbet/rbi/gems/net-imap@0.4.16.rbi +10845 -0
  63. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +927 -0
  64. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
  65. data/sorbet/rbi/gems/net-smtp@0.5.0.rbi +1228 -0
  66. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  67. data/sorbet/rbi/gems/nio4r@2.7.3.rbi +293 -0
  68. data/sorbet/rbi/gems/nokogiri@1.16.7.rbi +7311 -0
  69. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  70. data/sorbet/rbi/gems/parser@3.3.5.0.rbi +5519 -0
  71. data/sorbet/rbi/gems/prism@1.0.0.rbi +35493 -0
  72. data/sorbet/rbi/gems/psych@5.1.2.rbi +1769 -0
  73. data/sorbet/rbi/gems/racc@1.8.1.rbi +162 -0
  74. data/sorbet/rbi/gems/rack-session@2.0.0.rbi +727 -0
  75. data/sorbet/rbi/gems/rack-test@2.1.0.rbi +747 -0
  76. data/sorbet/rbi/gems/rack@3.1.7.rbi +4902 -0
  77. data/sorbet/rbi/gems/rackup@2.1.0.rbi +390 -0
  78. data/sorbet/rbi/gems/rails-dom-testing@2.2.0.rbi +758 -0
  79. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.0.rbi +785 -0
  80. data/sorbet/rbi/gems/rails@7.2.1.rbi +9 -0
  81. data/sorbet/rbi/gems/railties@7.2.1.rbi +3824 -0
  82. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  83. data/sorbet/rbi/gems/rake@13.2.1.rbi +3046 -0
  84. data/sorbet/rbi/gems/rbi@0.2.0.rbi +4105 -0
  85. data/sorbet/rbi/gems/rdoc@6.7.0.rbi +12721 -0
  86. data/sorbet/rbi/gems/regexp_parser@2.9.2.rbi +3772 -0
  87. data/sorbet/rbi/gems/reline@0.5.10.rbi +9 -0
  88. data/sorbet/rbi/gems/rspec-core@3.13.1.rbi +11012 -0
  89. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
  90. data/sorbet/rbi/gems/rspec-mocks@3.13.1.rbi +5341 -0
  91. data/sorbet/rbi/gems/rspec-support@3.13.1.rbi +1630 -0
  92. data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
  93. data/sorbet/rbi/gems/rubocop-ast@1.32.3.rbi +7446 -0
  94. data/sorbet/rbi/gems/rubocop-capybara@2.21.0.rbi +9 -0
  95. data/sorbet/rbi/gems/rubocop-factory_bot@2.26.1.rbi +9 -0
  96. data/sorbet/rbi/gems/rubocop-graphql@1.5.4.rbi +9 -0
  97. data/sorbet/rbi/gems/rubocop-minitest@0.36.0.rbi +9 -0
  98. data/sorbet/rbi/gems/rubocop-performance@1.21.1.rbi +9 -0
  99. data/sorbet/rbi/gems/rubocop-rails@2.26.1.rbi +9 -0
  100. data/sorbet/rbi/gems/rubocop-rake@0.6.0.rbi +329 -0
  101. data/sorbet/rbi/gems/rubocop-rspec@3.0.5.rbi +9 -0
  102. data/sorbet/rbi/gems/rubocop-rspec_rails@2.30.0.rbi +9 -0
  103. data/sorbet/rbi/gems/rubocop-sorbet@0.8.5.rbi +9 -0
  104. data/sorbet/rbi/gems/rubocop@1.66.1.rbi +58268 -0
  105. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  106. data/sorbet/rbi/gems/securerandom@0.3.1.rbi +396 -0
  107. data/sorbet/rbi/gems/spoom@1.4.2.rbi +4932 -0
  108. data/sorbet/rbi/gems/stringio@3.1.1.rbi +9 -0
  109. data/sorbet/rbi/gems/tapioca@0.16.2.rbi +3581 -0
  110. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  111. data/sorbet/rbi/gems/timeout@0.4.1.rbi +149 -0
  112. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5918 -0
  113. data/sorbet/rbi/gems/unicode-display_width@2.5.0.rbi +66 -0
  114. data/sorbet/rbi/gems/useragent@0.16.10.rbi +9 -0
  115. data/sorbet/rbi/gems/webrick@1.8.1.rbi +2607 -0
  116. data/sorbet/rbi/gems/websocket-driver@0.7.6.rbi +993 -0
  117. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +121 -0
  118. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  119. data/sorbet/rbi/gems/yard@0.9.37.rbi +18570 -0
  120. data/sorbet/rbi/gems/zeitwerk@2.6.18.rbi +1051 -0
  121. data/sorbet/rbi/todo.rbi +6 -0
  122. data/sorbet/tapioca/config.yml +13 -0
  123. data/sorbet/tapioca/require.rb +9 -0
  124. data/tasks/bundle_update.rake +14 -0
  125. data/tasks/sorbet.rake +26 -0
  126. metadata +216 -0
@@ -0,0 +1,1051 @@
1
+ # typed: true
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/kernel.rb#3
9
+ module Kernel
10
+ private
11
+
12
+ # source://zeitwerk//lib/zeitwerk/kernel.rb#23
13
+ def require(path); end
14
+
15
+ class << self
16
+ # source://zeitwerk//lib/zeitwerk/kernel.rb#23
17
+ def require(path); end
18
+ end
19
+ end
20
+
21
+ # source://zeitwerk//lib/zeitwerk.rb#3
22
+ module Zeitwerk
23
+ class << self
24
+ # This is a dangerous method.
25
+ #
26
+ # source://zeitwerk//lib/zeitwerk.rb#22
27
+ def with_loader; end
28
+ end
29
+ end
30
+
31
+ # This private class encapsulates pairs (mod, cname).
32
+ #
33
+ # Objects represent the constant cname in the class or module object mod, and
34
+ # have API to manage them that encapsulates the constants API. Examples:
35
+ #
36
+ # cref.path
37
+ # cref.set(value)
38
+ # cref.get
39
+ #
40
+ # The constant may or may not exist in mod.
41
+ #
42
+ # source://zeitwerk//lib/zeitwerk/cref.rb#13
43
+ class Zeitwerk::Cref
44
+ include ::Zeitwerk::RealModName
45
+
46
+ # The type of the first argument is Module because Class < Module, class
47
+ # objects are also valid.
48
+ #
49
+ # @return [Cref] a new instance of Cref
50
+ #
51
+ # source://zeitwerk//lib/zeitwerk/cref.rb#23
52
+ def initialize(mod, cname); end
53
+
54
+ # source://zeitwerk//lib/zeitwerk/cref.rb#74
55
+ def autoload(abspath); end
56
+
57
+ # @return [Boolean]
58
+ #
59
+ # source://zeitwerk//lib/zeitwerk/cref.rb#68
60
+ def autoload?; end
61
+
62
+ # Returns the value of attribute cname.
63
+ #
64
+ # source://zeitwerk//lib/zeitwerk/cref.rb#17
65
+ def cname; end
66
+
67
+ # @return [Boolean]
68
+ #
69
+ # source://zeitwerk//lib/zeitwerk/cref.rb#79
70
+ def defined?; end
71
+
72
+ # @raise [NameError]
73
+ #
74
+ # source://zeitwerk//lib/zeitwerk/cref.rb#90
75
+ def get; end
76
+
77
+ # source://zeitwerk//lib/zeitwerk/cref.rb#34
78
+ def path; end
79
+
80
+ # @raise [NameError]
81
+ #
82
+ # source://zeitwerk//lib/zeitwerk/cref.rb#96
83
+ def remove; end
84
+
85
+ # source://zeitwerk//lib/zeitwerk/cref.rb#84
86
+ def set(value); end
87
+ end
88
+
89
+ # source://zeitwerk//lib/zeitwerk/error.rb#4
90
+ class Zeitwerk::Error < ::StandardError; end
91
+
92
+ # Centralizes the logic for the trace point used to detect the creation of
93
+ # explicit namespaces, needed to descend into matching subdirectories right
94
+ # after the constant has been defined.
95
+ #
96
+ # The implementation assumes an explicit namespace is managed by one loader.
97
+ # Loaders that reopen namespaces owned by other projects are responsible for
98
+ # loading their constant before setup. This is documented.
99
+ #
100
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#11
101
+ module Zeitwerk::ExplicitNamespace
102
+ extend ::Zeitwerk::RealModName
103
+
104
+ class << self
105
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#35
106
+ def __register(cpath, loader); end
107
+
108
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#53
109
+ def __registered?(cpath); end
110
+
111
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#45
112
+ def __unregister_loader(loader); end
113
+
114
+ private
115
+
116
+ # Maps constant paths that correspond to explicit namespaces according to
117
+ # the file system, to the loader responsible for them.
118
+ #
119
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#20
120
+ def cpaths; end
121
+
122
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#58
123
+ def disable_tracer_if_unneeded; end
124
+
125
+ # Returns the value of attribute mutex.
126
+ #
127
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#24
128
+ def mutex; end
129
+
130
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#35
131
+ def register(cpath, loader); end
132
+
133
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#53
134
+ def registered?(cpath); end
135
+
136
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#65
137
+ def tracepoint_class_callback(event); end
138
+
139
+ # Returns the value of attribute tracer.
140
+ #
141
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#28
142
+ def tracer; end
143
+
144
+ # source://zeitwerk//lib/zeitwerk/explicit_namespace.rb#45
145
+ def unregister_loader(loader); end
146
+ end
147
+ end
148
+
149
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#4
150
+ class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
151
+ # @return [GemInflector] a new instance of GemInflector
152
+ #
153
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#6
154
+ def initialize(root_file); end
155
+
156
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#13
157
+ def camelize(basename, abspath); end
158
+ end
159
+
160
+ # @private
161
+ #
162
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#5
163
+ class Zeitwerk::GemLoader < ::Zeitwerk::Loader
164
+ # @return [GemLoader] a new instance of GemLoader
165
+ #
166
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#19
167
+ def initialize(root_file, namespace:, warn_on_extra_files:); end
168
+
169
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#34
170
+ def setup; end
171
+
172
+ private
173
+
174
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#42
175
+ def warn_on_extra_files; end
176
+
177
+ class << self
178
+ # @private
179
+ #
180
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#14
181
+ def __new(root_file, namespace:, warn_on_extra_files:); end
182
+
183
+ private
184
+
185
+ def new(*_arg0); end
186
+ end
187
+ end
188
+
189
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#4
190
+ class Zeitwerk::Inflector
191
+ # Very basic snake case -> camel case conversion.
192
+ #
193
+ # inflector = Zeitwerk::Inflector.new
194
+ # inflector.camelize("post", ...) # => "Post"
195
+ # inflector.camelize("users_controller", ...) # => "UsersController"
196
+ # inflector.camelize("api", ...) # => "Api"
197
+ #
198
+ # Takes into account hard-coded mappings configured with `inflect`.
199
+ #
200
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#15
201
+ def camelize(basename, _abspath); end
202
+
203
+ # Configures hard-coded inflections:
204
+ #
205
+ # inflector = Zeitwerk::Inflector.new
206
+ # inflector.inflect(
207
+ # "html_parser" => "HTMLParser",
208
+ # "mysql_adapter" => "MySQLAdapter"
209
+ # )
210
+ #
211
+ # inflector.camelize("html_parser", abspath) # => "HTMLParser"
212
+ # inflector.camelize("mysql_adapter", abspath) # => "MySQLAdapter"
213
+ # inflector.camelize("users_controller", abspath) # => "UsersController"
214
+ #
215
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#32
216
+ def inflect(inflections); end
217
+
218
+ private
219
+
220
+ # Hard-coded basename to constant name user maps that override the default
221
+ # inflection logic.
222
+ #
223
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#42
224
+ def overrides; end
225
+ end
226
+
227
+ # This is a private module.
228
+ #
229
+ # source://zeitwerk//lib/zeitwerk/internal.rb#4
230
+ module Zeitwerk::Internal
231
+ # source://zeitwerk//lib/zeitwerk/internal.rb#5
232
+ def internal(method_name); end
233
+ end
234
+
235
+ # source://zeitwerk//lib/zeitwerk/loader.rb#7
236
+ class Zeitwerk::Loader
237
+ include ::Zeitwerk::RealModName
238
+ include ::Zeitwerk::Loader::Callbacks
239
+ include ::Zeitwerk::Loader::Helpers
240
+ include ::Zeitwerk::Loader::Config
241
+ include ::Zeitwerk::Loader::EagerLoad
242
+ extend ::Zeitwerk::Internal
243
+ extend ::Zeitwerk::RealModName
244
+
245
+ # @return [Loader] a new instance of Loader
246
+ #
247
+ # source://zeitwerk//lib/zeitwerk/loader.rb#100
248
+ def initialize; end
249
+
250
+ # source://zeitwerk//lib/zeitwerk/loader.rb#42
251
+ def __autoloaded_dirs; end
252
+
253
+ # source://zeitwerk//lib/zeitwerk/loader.rb#32
254
+ def __autoloads; end
255
+
256
+ # source://zeitwerk//lib/zeitwerk/loader.rb#78
257
+ def __namespace_dirs; end
258
+
259
+ # source://zeitwerk//lib/zeitwerk/loader.rb#344
260
+ def __shadowed_file?(file); end
261
+
262
+ # source://zeitwerk//lib/zeitwerk/loader.rb#89
263
+ def __shadowed_files; end
264
+
265
+ # source://zeitwerk//lib/zeitwerk/loader.rb#60
266
+ def __to_unload; end
267
+
268
+ # Returns a hash that maps the absolute paths of the managed files and
269
+ # directories to their respective expected constant paths.
270
+ #
271
+ # source://zeitwerk//lib/zeitwerk/loader.rb#238
272
+ def all_expected_cpaths; end
273
+
274
+ # @raise [Zeitwerk::Error]
275
+ #
276
+ # source://zeitwerk//lib/zeitwerk/loader.rb#268
277
+ def cpath_expected_at(path); end
278
+
279
+ # Unloads all loaded code, and calls setup again so that the loader is able
280
+ # to pick any changes in the file system.
281
+ #
282
+ # This method is not thread-safe, please see how this can be achieved by
283
+ # client code in the README of the project.
284
+ #
285
+ # @raise [Zeitwerk::Error]
286
+ #
287
+ # source://zeitwerk//lib/zeitwerk/loader.rb#224
288
+ def reload; end
289
+
290
+ # Sets autoloads in the root namespaces.
291
+ #
292
+ # source://zeitwerk//lib/zeitwerk/loader.rb#120
293
+ def setup; end
294
+
295
+ # Removes loaded constants and configured autoloads.
296
+ #
297
+ # The objects the constants stored are no longer reachable through them. In
298
+ # addition, since said objects are normally not referenced from anywhere
299
+ # else, they are eligible for garbage collection, which would effectively
300
+ # unload them.
301
+ #
302
+ # This method is public but undocumented. Main interface is `reload`, which
303
+ # means `unload` + `setup`. This one is available to be used together with
304
+ # `unregister`, which is undocumented too.
305
+ #
306
+ # source://zeitwerk//lib/zeitwerk/loader.rb#146
307
+ def unload; end
308
+
309
+ # Says if the given constant path would be unloaded on reload. This
310
+ # predicate returns `false` if reloading is disabled.
311
+ #
312
+ # @return [Boolean]
313
+ #
314
+ # source://zeitwerk//lib/zeitwerk/loader.rb#319
315
+ def unloadable_cpath?(cpath); end
316
+
317
+ # Returns an array with the constant paths that would be unloaded on reload.
318
+ # This predicate returns an empty array if reloading is disabled.
319
+ #
320
+ # source://zeitwerk//lib/zeitwerk/loader.rb#327
321
+ def unloadable_cpaths; end
322
+
323
+ # This is a dangerous method.
324
+ #
325
+ # source://zeitwerk//lib/zeitwerk/loader.rb#335
326
+ def unregister; end
327
+
328
+ private
329
+
330
+ # source://zeitwerk//lib/zeitwerk/loader.rb#491
331
+ def autoload_file(cref, file); end
332
+
333
+ # @return [Boolean]
334
+ #
335
+ # source://zeitwerk//lib/zeitwerk/loader.rb#544
336
+ def autoload_path_set_by_me_for?(cref); end
337
+
338
+ # source://zeitwerk//lib/zeitwerk/loader.rb#462
339
+ def autoload_subdir(cref, subdir); end
340
+
341
+ # We keep track of autoloaded directories to remove them from the registry
342
+ # at the end of eager loading.
343
+ #
344
+ # Files are removed as they are autoloaded, but directories need to wait due
345
+ # to concurrency (see why in Zeitwerk::Loader::Callbacks#on_dir_autoloaded).
346
+ #
347
+ # source://zeitwerk//lib/zeitwerk/loader.rb#42
348
+ def autoloaded_dirs; end
349
+
350
+ # Maps absolute paths for which an autoload has been set ---and not
351
+ # executed--- to their corresponding Zeitwerk::Cref object.
352
+ #
353
+ # "/Users/fxn/blog/app/models/user.rb" => #<Zeitwerk::Cref:... @mod=Object, @cname=:User, ...>,
354
+ # "/Users/fxn/blog/app/models/hotel/pricing.rb" => #<Zeitwerk::Cref:... @mod=Hotel, @cname=:Pricing, ...>,
355
+ # ...
356
+ #
357
+ # source://zeitwerk//lib/zeitwerk/loader.rb#32
358
+ def autoloads; end
359
+
360
+ # source://zeitwerk//lib/zeitwerk/loader.rb#523
361
+ def define_autoload(cref, abspath); end
362
+
363
+ # source://zeitwerk//lib/zeitwerk/loader.rb#444
364
+ def define_autoloads_for_dir(dir, parent); end
365
+
366
+ # Returns the value of attribute dirs_autoload_monitor.
367
+ #
368
+ # source://zeitwerk//lib/zeitwerk/loader.rb#97
369
+ def dirs_autoload_monitor; end
370
+
371
+ # Returns the value of attribute mutex.
372
+ #
373
+ # source://zeitwerk//lib/zeitwerk/loader.rb#93
374
+ def mutex; end
375
+
376
+ # Maps namespace constant paths to their respective directories.
377
+ #
378
+ # For example, given this mapping:
379
+ #
380
+ # "Admin" => [
381
+ # "/Users/fxn/blog/app/controllers/admin",
382
+ # "/Users/fxn/blog/app/models/admin",
383
+ # ...
384
+ # ]
385
+ #
386
+ # when `Admin` gets defined we know that it plays the role of a namespace
387
+ # and that its children are spread over those directories. We'll visit them
388
+ # to set up the corresponding autoloads.
389
+ #
390
+ # source://zeitwerk//lib/zeitwerk/loader.rb#78
391
+ def namespace_dirs; end
392
+
393
+ # `dir` is the directory that would have autovivified a namespace. `file` is
394
+ # the file where we've found the namespace is explicitly defined.
395
+ #
396
+ # source://zeitwerk//lib/zeitwerk/loader.rb#512
397
+ def promote_namespace_from_implicit_to_explicit(dir:, file:, cref:); end
398
+
399
+ # source://zeitwerk//lib/zeitwerk/loader.rb#558
400
+ def raise_if_conflicting_directory(dir); end
401
+
402
+ # source://zeitwerk//lib/zeitwerk/loader.rb#553
403
+ def register_explicit_namespace(cpath); end
404
+
405
+ # source://zeitwerk//lib/zeitwerk/loader.rb#582
406
+ def run_on_unload_callbacks(cpath, value, abspath); end
407
+
408
+ # source://zeitwerk//lib/zeitwerk/loader.rb#344
409
+ def shadowed_file?(file); end
410
+
411
+ # A shadowed file is a file managed by this loader that is ignored when
412
+ # setting autoloads because its matching constant is already taken.
413
+ #
414
+ # This private set is populated as we descend. For example, if the loader
415
+ # has only scanned the top-level, `shadowed_files` does not have shadowed
416
+ # files that may exist deep in the project tree yet.
417
+ #
418
+ # source://zeitwerk//lib/zeitwerk/loader.rb#89
419
+ def shadowed_files; end
420
+
421
+ # Stores metadata needed for unloading. Its entries look like this:
422
+ #
423
+ # "Admin::Role" => [
424
+ # ".../admin/role.rb",
425
+ # #<Zeitwerk::Cref:... @mod=Admin, @cname=:Role, ...>
426
+ # ]
427
+ #
428
+ # The cpath as key helps implementing unloadable_cpath? The file name is
429
+ # stored in order to be able to delete it from $LOADED_FEATURES, and the
430
+ # cref is used to remove the constant from the parent class or module.
431
+ #
432
+ # If reloading is enabled, this hash is filled as constants are autoloaded
433
+ # or eager loaded. Otherwise, the collection remains empty.
434
+ #
435
+ # source://zeitwerk//lib/zeitwerk/loader.rb#60
436
+ def to_unload; end
437
+
438
+ # source://zeitwerk//lib/zeitwerk/loader.rb#589
439
+ def unload_autoload(cref); end
440
+
441
+ # source://zeitwerk//lib/zeitwerk/loader.rb#595
442
+ def unload_cref(cref); end
443
+
444
+ class << self
445
+ # Returns an array with the absolute paths of the root directories of all
446
+ # registered loaders. This is a read-only collection.
447
+ #
448
+ # source://zeitwerk//lib/zeitwerk/loader.rb#438
449
+ def all_dirs; end
450
+
451
+ # Returns the value of attribute default_logger.
452
+ #
453
+ # source://zeitwerk//lib/zeitwerk/loader.rb#354
454
+ def default_logger; end
455
+
456
+ # Sets the attribute default_logger
457
+ #
458
+ # @param value the value to set the attribute default_logger to.
459
+ #
460
+ # source://zeitwerk//lib/zeitwerk/loader.rb#354
461
+ def default_logger=(_arg0); end
462
+
463
+ # Broadcasts `eager_load` to all loaders. Those that have not been setup
464
+ # are skipped.
465
+ #
466
+ # source://zeitwerk//lib/zeitwerk/loader.rb#410
467
+ def eager_load_all; end
468
+
469
+ # Broadcasts `eager_load_namespace` to all loaders. Those that have not
470
+ # been setup are skipped.
471
+ #
472
+ # source://zeitwerk//lib/zeitwerk/loader.rb#424
473
+ def eager_load_namespace(mod); end
474
+
475
+ # This is a shortcut for
476
+ #
477
+ # require "zeitwerk"
478
+ #
479
+ # loader = Zeitwerk::Loader.new
480
+ # loader.tag = File.basename(__FILE__, ".rb")
481
+ # loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
482
+ # loader.push_dir(__dir__)
483
+ #
484
+ # except that this method returns the same object in subsequent calls from
485
+ # the same file, in the unlikely case the gem wants to be able to reload.
486
+ #
487
+ # This method returns a subclass of Zeitwerk::Loader, but the exact type
488
+ # is private, client code can only rely on the interface.
489
+ #
490
+ # source://zeitwerk//lib/zeitwerk/loader.rb#372
491
+ def for_gem(warn_on_extra_files: T.unsafe(nil)); end
492
+
493
+ # This is a shortcut for
494
+ #
495
+ # require "zeitwerk"
496
+ #
497
+ # loader = Zeitwerk::Loader.new
498
+ # loader.tag = namespace.name + "-" + File.basename(__FILE__, ".rb")
499
+ # loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
500
+ # loader.push_dir(__dir__, namespace: namespace)
501
+ #
502
+ # except that this method returns the same object in subsequent calls from
503
+ # the same file, in the unlikely case the gem wants to be able to reload.
504
+ #
505
+ # This method returns a subclass of Zeitwerk::Loader, but the exact type
506
+ # is private, client code can only rely on the interface.
507
+ #
508
+ # source://zeitwerk//lib/zeitwerk/loader.rb#393
509
+ def for_gem_extension(namespace); end
510
+ end
511
+ end
512
+
513
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#3
514
+ module Zeitwerk::Loader::Callbacks
515
+ include ::Zeitwerk::RealModName
516
+ extend ::Zeitwerk::Internal
517
+
518
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
519
+ def __on_dir_autoloaded(dir); end
520
+
521
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
522
+ def __on_file_autoloaded(file); end
523
+
524
+ # Invoked when a class or module is created or reopened, either from the
525
+ # tracer or from module autovivification. If the namespace has matching
526
+ # subdirectories, we descend into them now.
527
+ #
528
+ # @private
529
+ #
530
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#80
531
+ def on_namespace_loaded(namespace); end
532
+
533
+ private
534
+
535
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#40
536
+ def on_dir_autoloaded(dir); end
537
+
538
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#10
539
+ def on_file_autoloaded(file); end
540
+
541
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#91
542
+ def run_on_load_callbacks(cpath, value, abspath); end
543
+ end
544
+
545
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#6
546
+ module Zeitwerk::Loader::Config
547
+ include ::Zeitwerk::RealModName
548
+ extend ::Zeitwerk::Internal
549
+
550
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#86
551
+ def initialize; end
552
+
553
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#296
554
+ def __ignores?(abspath); end
555
+
556
+ def __roots; end
557
+
558
+ # Configure directories or glob patterns to be collapsed.
559
+ #
560
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#216
561
+ def collapse(*glob_patterns); end
562
+
563
+ # If `namespaces` is falsey (default), returns an array with the absolute
564
+ # paths of the root directories as strings. If truthy, returns a hash table
565
+ # instead. Keys are the absolute paths of the root directories as strings,
566
+ # values are their corresponding namespaces, class or module objects.
567
+ #
568
+ # If `ignored` is falsey (default), ignored root directories are filtered out.
569
+ #
570
+ # These are read-only collections, please add to them with `push_dir`.
571
+ #
572
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#156
573
+ def dirs(namespaces: T.unsafe(nil), ignored: T.unsafe(nil)); end
574
+
575
+ # Let eager load ignore the given files or directories. The constants defined
576
+ # in those files are still autoloadable.
577
+ #
578
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#198
579
+ def do_not_eager_load(*paths); end
580
+
581
+ # You need to call this method before setup in order to be able to reload.
582
+ # There is no way to undo this, either you want to reload or you don't.
583
+ #
584
+ # @raise [Zeitwerk::Error]
585
+ #
586
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#177
587
+ def enable_reloading; end
588
+
589
+ # Configure files, directories, or glob patterns to be totally ignored.
590
+ #
591
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#205
592
+ def ignore(*glob_patterns); end
593
+
594
+ # Returns the value of attribute inflector.
595
+ #
596
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#11
597
+ def inflector; end
598
+
599
+ # Sets the attribute inflector
600
+ #
601
+ # @param value the value to set the attribute inflector to.
602
+ #
603
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#11
604
+ def inflector=(_arg0); end
605
+
606
+ # Logs to `$stdout`, handy shortcut for debugging.
607
+ #
608
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#288
609
+ def log!; end
610
+
611
+ # Returns the value of attribute logger.
612
+ #
613
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
614
+ def logger; end
615
+
616
+ # Sets the attribute logger
617
+ #
618
+ # @param value the value to set the attribute logger to.
619
+ #
620
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
621
+ def logger=(_arg0); end
622
+
623
+ # Configure a block to be invoked once a certain constant path is loaded.
624
+ # Supports multiple callbacks, and if there are many, they are executed in
625
+ # the order in which they were defined.
626
+ #
627
+ # loader.on_load("SomeApiClient") do |klass, _abspath|
628
+ # klass.endpoint = "https://api.dev"
629
+ # end
630
+ #
631
+ # Can also be configured for any constant loaded:
632
+ #
633
+ # loader.on_load do |cpath, value, abspath|
634
+ # # ...
635
+ # end
636
+ #
637
+ # @raise [TypeError]
638
+ #
639
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#252
640
+ def on_load(cpath = T.unsafe(nil), &block); end
641
+
642
+ # Configure a block to be called after setup and on each reload.
643
+ # If setup was already done, the block runs immediately.
644
+ #
645
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#228
646
+ def on_setup(&block); end
647
+
648
+ # Configure a block to be invoked right before a certain constant is removed.
649
+ # Supports multiple callbacks, and if there are many, they are executed in the
650
+ # order in which they were defined.
651
+ #
652
+ # loader.on_unload("Country") do |klass, _abspath|
653
+ # klass.clear_cache
654
+ # end
655
+ #
656
+ # Can also be configured for any removed constant:
657
+ #
658
+ # loader.on_unload do |cpath, value, abspath|
659
+ # # ...
660
+ # end
661
+ #
662
+ # @raise [TypeError]
663
+ #
664
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#277
665
+ def on_unload(cpath = T.unsafe(nil), &block); end
666
+
667
+ # Pushes `path` to the list of root directories.
668
+ #
669
+ # Raises `Zeitwerk::Error` if `path` does not exist, or if another loader in
670
+ # the same process already manages that directory or one of its ascendants or
671
+ # descendants.
672
+ #
673
+ # @raise [Zeitwerk::Error]
674
+ #
675
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#111
676
+ def push_dir(path, namespace: T.unsafe(nil)); end
677
+
678
+ # @return [Boolean]
679
+ #
680
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#190
681
+ def reloading_enabled?; end
682
+
683
+ # Returns the loader's tag.
684
+ #
685
+ # Implemented as a method instead of via attr_reader for symmetry with the
686
+ # writer below.
687
+ #
688
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#135
689
+ def tag; end
690
+
691
+ # Sets a tag for the loader, useful for logging.
692
+ #
693
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#142
694
+ def tag=(tag); end
695
+
696
+ private
697
+
698
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#314
699
+ def actual_roots; end
700
+
701
+ # @return [Boolean]
702
+ #
703
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#339
704
+ def collapse?(dir); end
705
+
706
+ # The actual collection of absolute directory names at the time the collapse
707
+ # glob patterns were expanded. Computed on setup, and recomputed on reload.
708
+ #
709
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#57
710
+ def collapse_dirs; end
711
+
712
+ # Absolute paths of directories or glob patterns to be collapsed.
713
+ #
714
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#50
715
+ def collapse_glob_patterns; end
716
+
717
+ # Absolute paths of files or directories not to be eager loaded.
718
+ #
719
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#63
720
+ def eager_load_exclusions; end
721
+
722
+ # @return [Boolean]
723
+ #
724
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#326
725
+ def excluded_from_eager_load?(abspath); end
726
+
727
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#349
728
+ def expand_glob_patterns(glob_patterns); end
729
+
730
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#344
731
+ def expand_paths(paths); end
732
+
733
+ # Absolute paths of files, directories, or glob patterns to be totally
734
+ # ignored.
735
+ #
736
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#36
737
+ def ignored_glob_patterns; end
738
+
739
+ # @return [Boolean]
740
+ #
741
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#309
742
+ def ignored_path?(abspath); end
743
+
744
+ # The actual collection of absolute file and directory names at the time the
745
+ # ignored glob patterns were expanded. Computed on setup, and recomputed on
746
+ # reload.
747
+ #
748
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#44
749
+ def ignored_paths; end
750
+
751
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#296
752
+ def ignores?(abspath); end
753
+
754
+ # User-oriented callbacks to be fired when a constant is loaded.
755
+ #
756
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#76
757
+ def on_load_callbacks; end
758
+
759
+ # User-oriented callbacks to be fired on setup and on reload.
760
+ #
761
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#69
762
+ def on_setup_callbacks; end
763
+
764
+ # User-oriented callbacks to be fired before constants are removed.
765
+ #
766
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#83
767
+ def on_unload_callbacks; end
768
+
769
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#361
770
+ def recompute_collapse_dirs; end
771
+
772
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#356
773
+ def recompute_ignored_paths; end
774
+
775
+ # @return [Boolean]
776
+ #
777
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#321
778
+ def root_dir?(dir); end
779
+
780
+ # Absolute paths of the root directories, mapped to their respective root namespaces:
781
+ #
782
+ # "/Users/fxn/blog/app/channels" => Object,
783
+ # "/Users/fxn/blog/app/adapters" => ActiveJob::QueueAdapters,
784
+ # ...
785
+ #
786
+ # Stored in a hash to preserve order, easily handle duplicates, and have a
787
+ # fast lookup by directory.
788
+ #
789
+ # This is a private collection maintained by the loader. The public
790
+ # interface for it is `push_dir` and `dirs`.
791
+ #
792
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#29
793
+ def roots; end
794
+ end
795
+
796
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#1
797
+ module Zeitwerk::Loader::EagerLoad
798
+ # Eager loads all files in the root directories, recursively. Files do not
799
+ # need to be in `$LOAD_PATH`, absolute file names are used. Ignored and
800
+ # shadowed files are not eager loaded. You can opt-out specifically in
801
+ # specific files and directories with `do_not_eager_load`, and that can be
802
+ # overridden passing `force: true`.
803
+ #
804
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#9
805
+ def eager_load(force: T.unsafe(nil)); end
806
+
807
+ # @raise [Zeitwerk::SetupRequired]
808
+ #
809
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#32
810
+ def eager_load_dir(path); end
811
+
812
+ # @raise [Zeitwerk::SetupRequired]
813
+ #
814
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#74
815
+ def eager_load_namespace(mod); end
816
+
817
+ # Loads the given Ruby file.
818
+ #
819
+ # Raises if the argument is ignored, shadowed, or not managed by the receiver.
820
+ #
821
+ # The method is implemented as `constantize` for files, in a sense, to be able
822
+ # to descend orderly and make sure the file is loadable.
823
+ #
824
+ # @raise [Zeitwerk::Error]
825
+ #
826
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#116
827
+ def load_file(path); end
828
+
829
+ private
830
+
831
+ # The caller is responsible for making sure `namespace` is the namespace that
832
+ # corresponds to `dir`.
833
+ #
834
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#160
835
+ def actual_eager_load_dir(dir, namespace, force: T.unsafe(nil)); end
836
+
837
+ # In order to invoke this method, the caller has to ensure `child` is a
838
+ # strict namespace descendant of `root_namespace`.
839
+ #
840
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#193
841
+ def eager_load_child_namespace(child, child_name, root_dir, root_namespace); end
842
+ end
843
+
844
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#3
845
+ module Zeitwerk::Loader::Helpers
846
+ private
847
+
848
+ # @raise [Zeitwerk::NameError]
849
+ #
850
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#110
851
+ def cname_for(basename, abspath); end
852
+
853
+ # @return [Boolean]
854
+ #
855
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#85
856
+ def dir?(path); end
857
+
858
+ # Looks for a Ruby file using breadth-first search. This type of search is
859
+ # important to list as less directories as possible and return fast in the
860
+ # common case in which there are Ruby files.
861
+ #
862
+ # @return [Boolean]
863
+ #
864
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#56
865
+ def has_at_least_one_ruby_file?(dir); end
866
+
867
+ # @return [Boolean]
868
+ #
869
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#90
870
+ def hidden?(basename); end
871
+
872
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#7
873
+ def log(message); end
874
+
875
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#15
876
+ def ls(dir); end
877
+
878
+ # @return [Boolean]
879
+ #
880
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#80
881
+ def ruby?(path); end
882
+
883
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#95
884
+ def walk_up(abspath); end
885
+ end
886
+
887
+ # --- Inflection --------------------------------------------------------------------------------
888
+ #
889
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#105
890
+ module Zeitwerk::Loader::Helpers::CNAME_VALIDATOR; end
891
+
892
+ # source://zeitwerk//lib/zeitwerk/loader.rb#21
893
+ Zeitwerk::Loader::MUTEX = T.let(T.unsafe(nil), Thread::Mutex)
894
+
895
+ # source://zeitwerk//lib/zeitwerk/error.rb#13
896
+ class Zeitwerk::NameError < ::NameError; end
897
+
898
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#1
899
+ class Zeitwerk::NullInflector
900
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#2
901
+ def camelize(basename, _abspath); end
902
+ end
903
+
904
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#3
905
+ module Zeitwerk::RealModName
906
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#14
907
+ def real_mod_name(mod); end
908
+ end
909
+
910
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#4
911
+ Zeitwerk::RealModName::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)
912
+
913
+ # source://zeitwerk//lib/zeitwerk/registry.rb#4
914
+ module Zeitwerk::Registry
915
+ class << self
916
+ # Maps absolute paths to the loaders responsible for them.
917
+ #
918
+ # This information is used by our decorated `Kernel#require` to be able to
919
+ # invoke callbacks and autovivify modules.
920
+ #
921
+ # @private
922
+ #
923
+ # source://zeitwerk//lib/zeitwerk/registry.rb#26
924
+ def autoloads; end
925
+
926
+ # Registers gem loaders to let `for_gem` be idempotent in case of reload.
927
+ #
928
+ # @private
929
+ #
930
+ # source://zeitwerk//lib/zeitwerk/registry.rb#17
931
+ def gem_loaders_by_root_file; end
932
+
933
+ # @private
934
+ # @return [Boolean]
935
+ #
936
+ # source://zeitwerk//lib/zeitwerk/registry.rb#113
937
+ def inception?(cpath, registered_by_loader = T.unsafe(nil)); end
938
+
939
+ # This hash table addresses an edge case in which an autoload is ignored.
940
+ #
941
+ # For example, let's suppose we want to autoload in a gem like this:
942
+ #
943
+ # # lib/my_gem.rb
944
+ # loader = Zeitwerk::Loader.new
945
+ # loader.push_dir(__dir__)
946
+ # loader.setup
947
+ #
948
+ # module MyGem
949
+ # end
950
+ #
951
+ # if you require "my_gem", as Bundler would do, this happens while setting
952
+ # up autoloads:
953
+ #
954
+ # 1. Object.autoload?(:MyGem) returns `nil` because the autoload for
955
+ # the constant is issued by Zeitwerk while the same file is being
956
+ # required.
957
+ # 2. The constant `MyGem` is undefined while setup runs.
958
+ #
959
+ # Therefore, a directory `lib/my_gem` would autovivify a module according to
960
+ # the existing information. But that would be wrong.
961
+ #
962
+ # To overcome this fundamental limitation, we keep track of the constant
963
+ # paths that are in this situation ---in the example above, "MyGem"--- and
964
+ # take this collection into account for the autovivification logic.
965
+ #
966
+ # Note that you cannot generally address this by moving the setup code
967
+ # below the constant definition, because we want libraries to be able to
968
+ # use managed constants in the module body:
969
+ #
970
+ # module MyGem
971
+ # include MyConcern
972
+ # end
973
+ #
974
+ # @private
975
+ #
976
+ # source://zeitwerk//lib/zeitwerk/registry.rb#65
977
+ def inceptions; end
978
+
979
+ # @private
980
+ #
981
+ # source://zeitwerk//lib/zeitwerk/registry.rb#124
982
+ def loader_for(path); end
983
+
984
+ # This method returns always a loader, the same instance for the same root
985
+ # file. That is how Zeitwerk::Loader.for_gem is idempotent.
986
+ #
987
+ # @private
988
+ #
989
+ # source://zeitwerk//lib/zeitwerk/registry.rb#89
990
+ def loader_for_gem(root_file, namespace:, warn_on_extra_files:); end
991
+
992
+ # Keeps track of all loaders. Useful to broadcast messages and to prevent
993
+ # them from being garbage collected.
994
+ #
995
+ # @private
996
+ #
997
+ # source://zeitwerk//lib/zeitwerk/registry.rb#11
998
+ def loaders; end
999
+
1000
+ # @private
1001
+ #
1002
+ # source://zeitwerk//lib/zeitwerk/registry.rb#130
1003
+ def on_unload(loader); end
1004
+
1005
+ # @private
1006
+ #
1007
+ # source://zeitwerk//lib/zeitwerk/registry.rb#95
1008
+ def register_autoload(loader, abspath); end
1009
+
1010
+ # @private
1011
+ #
1012
+ # source://zeitwerk//lib/zeitwerk/registry.rb#107
1013
+ def register_inception(cpath, abspath, loader); end
1014
+
1015
+ # Registers a loader.
1016
+ #
1017
+ # @private
1018
+ #
1019
+ # source://zeitwerk//lib/zeitwerk/registry.rb#71
1020
+ def register_loader(loader); end
1021
+
1022
+ # @private
1023
+ #
1024
+ # source://zeitwerk//lib/zeitwerk/registry.rb#101
1025
+ def unregister_autoload(abspath); end
1026
+
1027
+ # @private
1028
+ #
1029
+ # source://zeitwerk//lib/zeitwerk/registry.rb#77
1030
+ def unregister_loader(loader); end
1031
+ end
1032
+ end
1033
+
1034
+ # source://zeitwerk//lib/zeitwerk/error.rb#7
1035
+ class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
1036
+ # @return [ReloadingDisabledError] a new instance of ReloadingDisabledError
1037
+ #
1038
+ # source://zeitwerk//lib/zeitwerk/error.rb#8
1039
+ def initialize; end
1040
+ end
1041
+
1042
+ # source://zeitwerk//lib/zeitwerk/error.rb#16
1043
+ class Zeitwerk::SetupRequired < ::Zeitwerk::Error
1044
+ # @return [SetupRequired] a new instance of SetupRequired
1045
+ #
1046
+ # source://zeitwerk//lib/zeitwerk/error.rb#17
1047
+ def initialize; end
1048
+ end
1049
+
1050
+ # source://zeitwerk//lib/zeitwerk/version.rb#4
1051
+ Zeitwerk::VERSION = T.let(T.unsafe(nil), String)