rails_type_id 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 (124) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +25 -0
  3. data/.ruby-version +1 -0
  4. data/README.md +46 -0
  5. data/Rakefile +16 -0
  6. data/lib/rails_type_id/concern.rb +129 -0
  7. data/lib/rails_type_id/require.rb +6 -0
  8. data/lib/rails_type_id/test_helper.rb +16 -0
  9. data/lib/rails_type_id/version.rb +6 -0
  10. data/lib/rails_type_id.rb +9 -0
  11. data/lib/tapioca/dsl/compilers/rails_type_id_compiler.rb +49 -0
  12. data/sig/rails_type_id.rbs +4 -0
  13. data/sorbet/config +4 -0
  14. data/sorbet/rbi/annotations/.gitattributes +1 -0
  15. data/sorbet/rbi/annotations/actionmailer.rbi +10 -0
  16. data/sorbet/rbi/annotations/actionpack.rbi +430 -0
  17. data/sorbet/rbi/annotations/actionview.rbi +75 -0
  18. data/sorbet/rbi/annotations/activejob.rbi +44 -0
  19. data/sorbet/rbi/annotations/activemodel.rbi +89 -0
  20. data/sorbet/rbi/annotations/activerecord.rbi +98 -0
  21. data/sorbet/rbi/annotations/activesupport.rbi +468 -0
  22. data/sorbet/rbi/annotations/globalid.rbi +30 -0
  23. data/sorbet/rbi/annotations/minitest.rbi +119 -0
  24. data/sorbet/rbi/annotations/railties.rbi +61 -0
  25. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  26. data/sorbet/rbi/dsl/.gitattributes +1 -0
  27. data/sorbet/rbi/dsl/active_model/validations/callbacks.rbi +21 -0
  28. data/sorbet/rbi/dsl/active_model/validations.rbi +26 -0
  29. data/sorbet/rbi/dsl/active_support/callbacks.rbi +21 -0
  30. data/sorbet/rbi/dsl/rails_type_id/concern.rbi +22 -0
  31. data/sorbet/rbi/gems/.gitattributes +1 -0
  32. data/sorbet/rbi/gems/actioncable@8.0.2.rbi +3133 -0
  33. data/sorbet/rbi/gems/actionmailbox@8.0.2.rbi +991 -0
  34. data/sorbet/rbi/gems/actionmailer@8.0.2.rbi +2775 -0
  35. data/sorbet/rbi/gems/actionpack@8.0.2.rbi +21167 -0
  36. data/sorbet/rbi/gems/actiontext@8.0.2.rbi +1449 -0
  37. data/sorbet/rbi/gems/actionview@8.0.2.rbi +15789 -0
  38. data/sorbet/rbi/gems/activejob@8.0.2.rbi +2864 -0
  39. data/sorbet/rbi/gems/activemodel@8.0.2.rbi +6946 -0
  40. data/sorbet/rbi/gems/activerecord@8.0.2.rbi +42458 -0
  41. data/sorbet/rbi/gems/activestorage@8.0.2.rbi +2156 -0
  42. data/sorbet/rbi/gems/activesupport@8.0.2.rbi +21274 -0
  43. data/sorbet/rbi/gems/ast@2.4.3.rbi +586 -0
  44. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  45. data/sorbet/rbi/gems/benchmark@0.4.1.rbi +619 -0
  46. data/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +275 -0
  47. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  48. data/sorbet/rbi/gems/concurrent-ruby@1.3.5.rbi +11734 -0
  49. data/sorbet/rbi/gems/connection_pool@2.5.3.rbi +9 -0
  50. data/sorbet/rbi/gems/crass@1.0.6.rbi +623 -0
  51. data/sorbet/rbi/gems/date@3.4.1.rbi +403 -0
  52. data/sorbet/rbi/gems/drb@2.2.3.rbi +1661 -0
  53. data/sorbet/rbi/gems/erb@5.0.2.rbi +878 -0
  54. data/sorbet/rbi/gems/erubi@1.13.1.rbi +157 -0
  55. data/sorbet/rbi/gems/globalid@1.2.1.rbi +742 -0
  56. data/sorbet/rbi/gems/i18n@1.14.7.rbi +2383 -0
  57. data/sorbet/rbi/gems/io-console@0.8.1.rbi +9 -0
  58. data/sorbet/rbi/gems/json@2.12.2.rbi +2287 -0
  59. data/sorbet/rbi/gems/language_server-protocol@3.17.0.5.rbi +9 -0
  60. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +323 -0
  61. data/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  62. data/sorbet/rbi/gems/loofah@2.24.1.rbi +1105 -0
  63. data/sorbet/rbi/gems/mail@2.8.1.rbi +8890 -0
  64. data/sorbet/rbi/gems/marcel@1.0.4.rbi +239 -0
  65. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +173 -0
  66. data/sorbet/rbi/gems/minitest@5.25.5.rbi +2231 -0
  67. data/sorbet/rbi/gems/net-imap@0.5.9.rbi +10285 -0
  68. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +927 -0
  69. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +292 -0
  70. data/sorbet/rbi/gems/net-smtp@0.5.1.rbi +1240 -0
  71. data/sorbet/rbi/gems/netrc@0.11.0.rbi +177 -0
  72. data/sorbet/rbi/gems/nio4r@2.7.4.rbi +388 -0
  73. data/sorbet/rbi/gems/nokogiri@1.18.9.rbi +8548 -0
  74. data/sorbet/rbi/gems/parallel@1.27.0.rbi +291 -0
  75. data/sorbet/rbi/gems/parser@3.3.9.0.rbi +5537 -0
  76. data/sorbet/rbi/gems/pp@0.6.2.rbi +368 -0
  77. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +477 -0
  78. data/sorbet/rbi/gems/prism@1.4.0.rbi +41790 -0
  79. data/sorbet/rbi/gems/psych@5.2.6.rbi +2542 -0
  80. data/sorbet/rbi/gems/racc@1.8.1.rbi +168 -0
  81. data/sorbet/rbi/gems/rack-session@2.1.1.rbi +722 -0
  82. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +729 -0
  83. data/sorbet/rbi/gems/rack@3.2.0.rbi +5054 -0
  84. data/sorbet/rbi/gems/rackup@2.2.1.rbi +230 -0
  85. data/sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi +790 -0
  86. data/sorbet/rbi/gems/rails-html-sanitizer@1.6.2.rbi +645 -0
  87. data/sorbet/rbi/gems/rails@8.0.2.rbi +9 -0
  88. data/sorbet/rbi/gems/railties@8.0.2.rbi +4014 -0
  89. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  90. data/sorbet/rbi/gems/rake@13.3.0.rbi +3039 -0
  91. data/sorbet/rbi/gems/rbi@0.3.6.rbi +5162 -0
  92. data/sorbet/rbi/gems/rbs@4.0.0.dev.4.rbi +7895 -0
  93. data/sorbet/rbi/gems/rdoc@6.14.2.rbi +12944 -0
  94. data/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3833 -0
  95. data/sorbet/rbi/gems/reline@0.6.2.rbi +9 -0
  96. data/sorbet/rbi/gems/require-hooks@0.2.2.rbi +110 -0
  97. data/sorbet/rbi/gems/rexml@3.4.1.rbi +5205 -0
  98. data/sorbet/rbi/gems/rubocop-ast@1.46.0.rbi +7473 -0
  99. data/sorbet/rbi/gems/rubocop-sorbet@0.10.5.rbi +2386 -0
  100. data/sorbet/rbi/gems/rubocop@1.79.1.rbi +63674 -0
  101. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  102. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  103. data/sorbet/rbi/gems/spoom@1.7.5.rbi +5832 -0
  104. data/sorbet/rbi/gems/sqlite3@2.7.3.rbi +1989 -0
  105. data/sorbet/rbi/gems/stringio@3.1.7.rbi +9 -0
  106. data/sorbet/rbi/gems/tapioca@0.17.7.rbi +3692 -0
  107. data/sorbet/rbi/gems/thor@1.4.0.rbi +4399 -0
  108. data/sorbet/rbi/gems/timeout@0.4.3.rbi +157 -0
  109. data/sorbet/rbi/gems/typeid@0.2.2.rbi +239 -0
  110. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5919 -0
  111. data/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +132 -0
  112. data/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +251 -0
  113. data/sorbet/rbi/gems/uri@1.0.3.rbi +2354 -0
  114. data/sorbet/rbi/gems/useragent@0.16.11.rbi +9 -0
  115. data/sorbet/rbi/gems/uuid7@0.2.0.rbi +60 -0
  116. data/sorbet/rbi/gems/websocket-driver@0.8.0.rbi +1065 -0
  117. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +117 -0
  118. data/sorbet/rbi/gems/with_model@2.2.0.rbi +282 -0
  119. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +430 -0
  120. data/sorbet/rbi/gems/yard@0.9.37.rbi +18512 -0
  121. data/sorbet/rbi/gems/zeitwerk@2.7.3.rbi +1196 -0
  122. data/sorbet/tapioca/config.yml +13 -0
  123. data/sorbet/tapioca/require.rb +13 -0
  124. metadata +208 -0
@@ -0,0 +1,1196 @@
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/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
+ # Zeitwerk's main idea is to define autoloads for project constants, and then
16
+ # intercept them when triggered in this thin `Kernel#require` wrapper.
17
+ #
18
+ # That allows us to complete the circle, invoke callbacks, autovivify modules,
19
+ # define autoloads for just autoloaded namespaces, update internal state, etc.
20
+ #
21
+ # On the other hand, if you publish a new version of a gem that is now managed
22
+ # by Zeitwerk, client code can reference directly your classes and modules and
23
+ # should not require anything. But if someone has legacy require calls around,
24
+ # they will work as expected, and in a compatible way. This feature is by now
25
+ # EXPERIMENTAL and UNDOCUMENTED.
26
+ #
27
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#17
28
+ def zeitwerk_original_require(name); end
29
+
30
+ class << self
31
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#23
32
+ def require(path); end
33
+
34
+ # Zeitwerk's main idea is to define autoloads for project constants, and then
35
+ # intercept them when triggered in this thin `Kernel#require` wrapper.
36
+ #
37
+ # That allows us to complete the circle, invoke callbacks, autovivify modules,
38
+ # define autoloads for just autoloaded namespaces, update internal state, etc.
39
+ #
40
+ # On the other hand, if you publish a new version of a gem that is now managed
41
+ # by Zeitwerk, client code can reference directly your classes and modules and
42
+ # should not require anything. But if someone has legacy require calls around,
43
+ # they will work as expected, and in a compatible way. This feature is by now
44
+ # EXPERIMENTAL and UNDOCUMENTED.
45
+ #
46
+ # source://zeitwerk//lib/zeitwerk/core_ext/kernel.rb#19
47
+ def zeitwerk_original_require(name); end
48
+ end
49
+ end
50
+
51
+ class Module
52
+ include ::Zeitwerk::ConstAdded
53
+ end
54
+
55
+ # source://zeitwerk//lib/zeitwerk.rb#3
56
+ module Zeitwerk
57
+ class << self
58
+ # This is a dangerous method.
59
+ #
60
+ #
61
+ # source://zeitwerk//lib/zeitwerk.rb#23
62
+ def with_loader; end
63
+ end
64
+ end
65
+
66
+ # source://zeitwerk//lib/zeitwerk/core_ext/module.rb#3
67
+ module Zeitwerk::ConstAdded
68
+ # source://zeitwerk//lib/zeitwerk/core_ext/module.rb#5
69
+ def const_added(cname); end
70
+ end
71
+
72
+ # This private class encapsulates pairs (mod, cname).
73
+ #
74
+ # Objects represent the constant `cname` in the class or module object `mod`,
75
+ # and have API to manage them. Examples:
76
+ #
77
+ # cref.path
78
+ # cref.set(value)
79
+ # cref.get
80
+ #
81
+ # The constant may or may not exist in `mod`.
82
+ #
83
+ # source://zeitwerk//lib/zeitwerk/cref.rb#13
84
+ class Zeitwerk::Cref
85
+ include ::Zeitwerk::RealModName
86
+
87
+ # The type of the first argument is Module because Class < Module, class
88
+ # objects are also valid.
89
+ #
90
+ #
91
+ # @return [Cref] a new instance of Cref
92
+ #
93
+ # source://zeitwerk//lib/zeitwerk/cref.rb#28
94
+ def initialize(mod, cname); end
95
+
96
+ # source://zeitwerk//lib/zeitwerk/cref.rb#46
97
+ def autoload(abspath); end
98
+
99
+ # @return [Boolean]
100
+ #
101
+ # source://zeitwerk//lib/zeitwerk/cref.rb#41
102
+ def autoload?; end
103
+
104
+ # source://zeitwerk//lib/zeitwerk/cref.rb#22
105
+ def cname; end
106
+
107
+ # @return [Boolean]
108
+ #
109
+ # source://zeitwerk//lib/zeitwerk/cref.rb#51
110
+ def defined?; end
111
+
112
+ # source://zeitwerk//lib/zeitwerk/cref.rb#61
113
+ def get; end
114
+
115
+ # source://zeitwerk//lib/zeitwerk/cref.rb#19
116
+ def mod; end
117
+
118
+ # source://zeitwerk//lib/zeitwerk/cref.rb#35
119
+ def path; end
120
+
121
+ # source://zeitwerk//lib/zeitwerk/cref.rb#66
122
+ def remove; end
123
+
124
+ # source://zeitwerk//lib/zeitwerk/cref.rb#56
125
+ def set(value); end
126
+
127
+ # source://zeitwerk//lib/zeitwerk/cref.rb#38
128
+ def to_s; end
129
+ end
130
+
131
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#73
132
+ class Zeitwerk::Cref::Map
133
+ # @return [Map] a new instance of Map
134
+ #
135
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#75
136
+ def initialize; end
137
+
138
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#90
139
+ def [](cref); end
140
+
141
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#82
142
+ def []=(cref, value); end
143
+
144
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#147
145
+ def clear; end
146
+
147
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#105
148
+ def delete(cref); end
149
+
150
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#124
151
+ def delete_by_value(value); end
152
+
153
+ # Ad-hoc for loader_for, called from const_added. That is a hot path, I prefer
154
+ # to not create a cref in every call, since that is global.
155
+ #
156
+ #
157
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#113
158
+ def delete_mod_cname(mod, cname); end
159
+
160
+ # Order of yielded crefs is undefined.
161
+ #
162
+ #
163
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#136
164
+ def each_key; end
165
+
166
+ # @return [Boolean]
167
+ #
168
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#154
169
+ def empty?; end
170
+
171
+ # source://zeitwerk//lib/zeitwerk/cref/map.rb#97
172
+ def get_or_set(cref, &block); end
173
+ end
174
+
175
+ # source://zeitwerk//lib/zeitwerk/error.rb#4
176
+ class Zeitwerk::Error < ::StandardError; end
177
+
178
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#4
179
+ class Zeitwerk::GemInflector < ::Zeitwerk::Inflector
180
+ # @return [GemInflector] a new instance of GemInflector
181
+ #
182
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#6
183
+ def initialize(root_file); end
184
+
185
+ # source://zeitwerk//lib/zeitwerk/gem_inflector.rb#13
186
+ def camelize(basename, abspath); end
187
+ end
188
+
189
+ # @private
190
+ #
191
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#5
192
+ class Zeitwerk::GemLoader < ::Zeitwerk::Loader
193
+ # @return [GemLoader] a new instance of GemLoader
194
+ #
195
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#19
196
+ def initialize(root_file, namespace:, warn_on_extra_files:); end
197
+
198
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#34
199
+ def setup; end
200
+
201
+ private
202
+
203
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#42
204
+ def warn_on_extra_files; end
205
+
206
+ class << self
207
+ # @private
208
+ #
209
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#14
210
+ def __new(root_file, namespace:, warn_on_extra_files:); end
211
+
212
+ private
213
+
214
+ # source://zeitwerk//lib/zeitwerk/gem_loader.rb#10
215
+ def new(*_arg0); end
216
+ end
217
+ end
218
+
219
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#4
220
+ class Zeitwerk::Inflector
221
+ # Very basic snake case -> camel case conversion.
222
+ #
223
+ # inflector = Zeitwerk::Inflector.new
224
+ # inflector.camelize("post", ...) # => "Post"
225
+ # inflector.camelize("users_controller", ...) # => "UsersController"
226
+ # inflector.camelize("api", ...) # => "Api"
227
+ #
228
+ # Takes into account hard-coded mappings configured with `inflect`.
229
+ #
230
+ #
231
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#15
232
+ def camelize(basename, _abspath); end
233
+
234
+ # Configures hard-coded inflections:
235
+ #
236
+ # inflector = Zeitwerk::Inflector.new
237
+ # inflector.inflect(
238
+ # "html_parser" => "HTMLParser",
239
+ # "mysql_adapter" => "MySQLAdapter"
240
+ # )
241
+ #
242
+ # inflector.camelize("html_parser", abspath) # => "HTMLParser"
243
+ # inflector.camelize("mysql_adapter", abspath) # => "MySQLAdapter"
244
+ # inflector.camelize("users_controller", abspath) # => "UsersController"
245
+ #
246
+ #
247
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#32
248
+ def inflect(inflections); end
249
+
250
+ private
251
+
252
+ # Hard-coded basename to constant name user maps that override the default
253
+ # inflection logic.
254
+ #
255
+ #
256
+ # source://zeitwerk//lib/zeitwerk/inflector.rb#42
257
+ def overrides; end
258
+ end
259
+
260
+ # This is a private module.
261
+ #
262
+ # source://zeitwerk//lib/zeitwerk/internal.rb#4
263
+ module Zeitwerk::Internal
264
+ # source://zeitwerk//lib/zeitwerk/internal.rb#6
265
+ def internal(method_name); end
266
+ end
267
+
268
+ # source://zeitwerk//lib/zeitwerk/loader.rb#7
269
+ class Zeitwerk::Loader
270
+ include ::Zeitwerk::RealModName
271
+ include ::Zeitwerk::Loader::Callbacks
272
+ include ::Zeitwerk::Loader::Helpers
273
+ include ::Zeitwerk::Loader::Config
274
+ include ::Zeitwerk::Loader::EagerLoad
275
+ extend ::Zeitwerk::Internal
276
+ extend ::Zeitwerk::RealModName
277
+
278
+ # @return [Loader] a new instance of Loader
279
+ #
280
+ # source://zeitwerk//lib/zeitwerk/loader.rb#107
281
+ def initialize; end
282
+
283
+ # source://zeitwerk//lib/zeitwerk/loader.rb#67
284
+ def __autoloaded_dirs; end
285
+
286
+ # source://zeitwerk//lib/zeitwerk/loader.rb#33
287
+ def __autoloads; end
288
+
289
+ # source://zeitwerk//lib/zeitwerk/loader.rb#57
290
+ def __inceptions; end
291
+
292
+ # source://zeitwerk//lib/zeitwerk/loader.rb#86
293
+ def __namespace_dirs; end
294
+
295
+ # source://zeitwerk//lib/zeitwerk/loader.rb#362
296
+ def __shadowed_file?(file); end
297
+
298
+ # source://zeitwerk//lib/zeitwerk/loader.rb#97
299
+ def __shadowed_files; end
300
+
301
+ # source://zeitwerk//lib/zeitwerk/loader.rb#77
302
+ def __to_unload; end
303
+
304
+ # Returns a hash that maps the absolute paths of the managed files and
305
+ # directories to their respective expected constant paths.
306
+ #
307
+ #
308
+ # source://zeitwerk//lib/zeitwerk/loader.rb#247
309
+ def all_expected_cpaths; end
310
+
311
+ # @raise [Zeitwerk::Error]
312
+ #
313
+ # source://zeitwerk//lib/zeitwerk/loader.rb#277
314
+ def cpath_expected_at(path); end
315
+
316
+ # Unloads all loaded code, and calls setup again so that the loader is able
317
+ # to pick any changes in the file system.
318
+ #
319
+ # This method is not thread-safe, please see how this can be achieved by
320
+ # client code in the README of the project.
321
+ #
322
+ #
323
+ # @raise [ReloadingDisabledError]
324
+ #
325
+ # source://zeitwerk//lib/zeitwerk/loader.rb#233
326
+ def reload; end
327
+
328
+ # Sets autoloads in the root namespaces.
329
+ #
330
+ #
331
+ # source://zeitwerk//lib/zeitwerk/loader.rb#128
332
+ def setup; end
333
+
334
+ # Removes loaded constants and configured autoloads.
335
+ #
336
+ # The objects the constants stored are no longer reachable through them. In
337
+ # addition, since said objects are normally not referenced from anywhere
338
+ # else, they are eligible for garbage collection, which would effectively
339
+ # unload them.
340
+ #
341
+ # This method is public but undocumented. Main interface is `reload`, which
342
+ # means `unload` + `setup`. This one is available to be used together with
343
+ # `unregister`, which is undocumented too.
344
+ #
345
+ #
346
+ # source://zeitwerk//lib/zeitwerk/loader.rb#154
347
+ def unload; end
348
+
349
+ # Says if the given constant path would be unloaded on reload. This
350
+ # predicate returns `false` if reloading is disabled.
351
+ #
352
+ # This is an undocumented method that I wrote to help transition from the
353
+ # classic autoloader in Rails. Its usage was removed from Rails in 7.0.
354
+ #
355
+ #
356
+ # @return [Boolean]
357
+ #
358
+ # source://zeitwerk//lib/zeitwerk/loader.rb#331
359
+ def unloadable_cpath?(cpath); end
360
+
361
+ # Returns an array with the constant paths that would be unloaded on reload.
362
+ # This predicate returns an empty array if reloading is disabled.
363
+ #
364
+ # This is an undocumented method that I wrote to help transition from the
365
+ # classic autoloader in Rails. Its usage was removed from Rails in 7.0.
366
+ #
367
+ #
368
+ # source://zeitwerk//lib/zeitwerk/loader.rb#342
369
+ def unloadable_cpaths; end
370
+
371
+ # This is a dangerous method.
372
+ #
373
+ #
374
+ # source://zeitwerk//lib/zeitwerk/loader.rb#350
375
+ def unregister; end
376
+
377
+ private
378
+
379
+ # source://zeitwerk//lib/zeitwerk/loader.rb#513
380
+ def autoload_file(cref, file); end
381
+
382
+ # @return [Boolean]
383
+ #
384
+ # source://zeitwerk//lib/zeitwerk/loader.rb#565
385
+ def autoload_path_set_by_me_for?(cref); end
386
+
387
+ # source://zeitwerk//lib/zeitwerk/loader.rb#484
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
+ #
397
+ # source://zeitwerk//lib/zeitwerk/loader.rb#66
398
+ def autoloaded_dirs; end
399
+
400
+ # Maps absolute paths for which an autoload has been set ---and not
401
+ # executed--- to their corresponding Zeitwerk::Cref object.
402
+ #
403
+ # "/Users/fxn/blog/app/models/user.rb" => #<Zeitwerk::Cref:... @mod=Object, @cname=:User, ...>,
404
+ # "/Users/fxn/blog/app/models/hotel/pricing.rb" => #<Zeitwerk::Cref:... @mod=Hotel, @cname=:Pricing, ...>,
405
+ # ...
406
+ #
407
+ #
408
+ # source://zeitwerk//lib/zeitwerk/loader.rb#32
409
+ def autoloads; end
410
+
411
+ # source://zeitwerk//lib/zeitwerk/loader.rb#547
412
+ def define_autoload(cref, abspath); end
413
+
414
+ # source://zeitwerk//lib/zeitwerk/loader.rb#466
415
+ def define_autoloads_for_dir(dir, parent); end
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 object Zeitwerk::Registry.inceptions, on the other hand, acts as a
438
+ # global registry for them.
439
+ #
440
+ #
441
+ # source://zeitwerk//lib/zeitwerk/loader.rb#56
442
+ def inceptions; end
443
+
444
+ # source://zeitwerk//lib/zeitwerk/loader.rb#100
445
+ def mutex; end
446
+
447
+ # Maps namespace crefs to the directories that conform the namespace.
448
+ #
449
+ # When these crefs get defined we know their children are spread over those
450
+ # directories. We'll visit them to set up the corresponding autoloads.
451
+ #
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
+ #
460
+ # source://zeitwerk//lib/zeitwerk/loader.rb#534
461
+ def promote_namespace_from_implicit_to_explicit(dir:, file:, cref:); end
462
+
463
+ # source://zeitwerk//lib/zeitwerk/loader.rb#598
464
+ def raise_if_conflicting_directory(dir); end
465
+
466
+ # source://zeitwerk//lib/zeitwerk/loader.rb#574
467
+ def register_explicit_namespace(cref); end
468
+
469
+ # source://zeitwerk//lib/zeitwerk/loader.rb#584
470
+ def register_inception(cref, abspath); end
471
+
472
+ # source://zeitwerk//lib/zeitwerk/loader.rb#622
473
+ def run_on_unload_callbacks(cref, value, abspath); end
474
+
475
+ # source://zeitwerk//lib/zeitwerk/loader.rb#362
476
+ def shadowed_file?(file); end
477
+
478
+ # A shadowed file is a file managed by this loader that is ignored when
479
+ # setting autoloads because its matching constant is already taken.
480
+ #
481
+ # This private set is populated lazily, as we descend. For example, if the
482
+ # loader has only scanned the top-level, `shadowed_files` does not have the
483
+ # shadowed files that may exist deep in the project tree.
484
+ #
485
+ #
486
+ # source://zeitwerk//lib/zeitwerk/loader.rb#96
487
+ def shadowed_files; end
488
+
489
+ # If reloading is enabled, this collection maps autoload paths to their
490
+ # autoloaded crefs.
491
+ #
492
+ # On unload, the autoload paths are passed to callbacks, files deleted from
493
+ # $LOADED_FEATURES, and the crefs are deleted.
494
+ #
495
+ #
496
+ # source://zeitwerk//lib/zeitwerk/loader.rb#76
497
+ def to_unload; end
498
+
499
+ # source://zeitwerk//lib/zeitwerk/loader.rb#629
500
+ def unload_autoload(cref); end
501
+
502
+ # source://zeitwerk//lib/zeitwerk/loader.rb#635
503
+ def unload_cref(cref); end
504
+
505
+ # source://zeitwerk//lib/zeitwerk/loader.rb#579
506
+ def unregister_explicit_namespaces; end
507
+
508
+ # source://zeitwerk//lib/zeitwerk/loader.rb#590
509
+ def unregister_inceptions; end
510
+
511
+ class << self
512
+ # Returns an array with the absolute paths of the root directories of all
513
+ # registered loaders. This is a read-only collection.
514
+ #
515
+ #
516
+ # source://zeitwerk//lib/zeitwerk/loader.rb#456
517
+ def all_dirs; end
518
+
519
+ # source://zeitwerk//lib/zeitwerk/loader.rb#372
520
+ def default_logger; end
521
+
522
+ # source://zeitwerk//lib/zeitwerk/loader.rb#372
523
+ def default_logger=(_arg0); end
524
+
525
+ # Broadcasts `eager_load` to all loaders. Those that have not been setup
526
+ # are skipped.
527
+ #
528
+ #
529
+ # source://zeitwerk//lib/zeitwerk/loader.rb#428
530
+ def eager_load_all; end
531
+
532
+ # Broadcasts `eager_load_namespace` to all loaders. Those that have not
533
+ # been setup are skipped.
534
+ #
535
+ #
536
+ # source://zeitwerk//lib/zeitwerk/loader.rb#442
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
+ #
555
+ # source://zeitwerk//lib/zeitwerk/loader.rb#390
556
+ def for_gem(warn_on_extra_files: T.unsafe(nil)); end
557
+
558
+ # This is a shortcut for
559
+ #
560
+ # require "zeitwerk"
561
+ #
562
+ # loader = Zeitwerk::Loader.new
563
+ # loader.tag = namespace.name + "-" + File.basename(__FILE__, ".rb")
564
+ # loader.inflector = Zeitwerk::GemInflector.new(__FILE__)
565
+ # loader.push_dir(__dir__, namespace: namespace)
566
+ #
567
+ # except that this method returns the same object in subsequent calls from
568
+ # the same file, in the unlikely case the gem wants to be able to reload.
569
+ #
570
+ # This method returns a subclass of Zeitwerk::Loader, but the exact type
571
+ # is private, client code can only rely on the interface.
572
+ #
573
+ #
574
+ # source://zeitwerk//lib/zeitwerk/loader.rb#411
575
+ def for_gem_extension(namespace); end
576
+ end
577
+ end
578
+
579
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#3
580
+ module Zeitwerk::Loader::Callbacks
581
+ extend ::Zeitwerk::Internal
582
+
583
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#39
584
+ def __on_dir_autoloaded(dir); end
585
+
586
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#9
587
+ def __on_file_autoloaded(file); end
588
+
589
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#77
590
+ def __on_namespace_loaded(cref, namespace); end
591
+
592
+ private
593
+
594
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#39
595
+ def on_dir_autoloaded(dir); end
596
+
597
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#9
598
+ def on_file_autoloaded(file); end
599
+
600
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#77
601
+ def on_namespace_loaded(cref, namespace); end
602
+
603
+ # source://zeitwerk//lib/zeitwerk/loader/callbacks.rb#88
604
+ def run_on_load_callbacks(cpath, value, abspath); end
605
+ end
606
+
607
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#6
608
+ module Zeitwerk::Loader::Config
609
+ include ::Zeitwerk::RealModName
610
+ extend ::Zeitwerk::Internal
611
+
612
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#85
613
+ def initialize; end
614
+
615
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#289
616
+ def __ignores?(abspath); end
617
+
618
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#30
619
+ def __roots; end
620
+
621
+ # Configure directories or glob patterns to be collapsed.
622
+ #
623
+ #
624
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#213
625
+ def collapse(*glob_patterns); end
626
+
627
+ # If `namespaces` is falsey (default), returns an array with the absolute
628
+ # paths of the root directories as strings. If truthy, returns a hash table
629
+ # instead. Keys are the absolute paths of the root directories as strings,
630
+ # values are their corresponding namespaces, class or module objects.
631
+ #
632
+ # If `ignored` is falsey (default), ignored root directories are filtered out.
633
+ #
634
+ # These are read-only collections, please add to them with `push_dir`.
635
+ #
636
+ #
637
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#154
638
+ def dirs(namespaces: T.unsafe(nil), ignored: T.unsafe(nil)); end
639
+
640
+ # Let eager load ignore the given files or directories. The constants defined
641
+ # in those files are still autoloadable.
642
+ #
643
+ #
644
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#195
645
+ def do_not_eager_load(*paths); end
646
+
647
+ # You need to call this method before setup in order to be able to reload.
648
+ # There is no way to undo this, either you want to reload or you don't.
649
+ #
650
+ #
651
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#174
652
+ def enable_reloading; end
653
+
654
+ # Configure files, directories, or glob patterns to be totally ignored.
655
+ #
656
+ #
657
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#202
658
+ def ignore(*glob_patterns); end
659
+
660
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#11
661
+ def inflector; end
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
+ #
669
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#281
670
+ def log!; end
671
+
672
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
673
+ def logger; end
674
+
675
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#14
676
+ def logger=(_arg0); end
677
+
678
+ # Configure a block to be invoked once a certain constant path is loaded.
679
+ # Supports multiple callbacks, and if there are many, they are executed in
680
+ # the order in which they were defined.
681
+ #
682
+ # loader.on_load("SomeApiClient") do |klass, _abspath|
683
+ # klass.endpoint = "https://api.dev"
684
+ # end
685
+ #
686
+ # Can also be configured for any constant loaded:
687
+ #
688
+ # loader.on_load do |cpath, value, abspath|
689
+ # # ...
690
+ # end
691
+ #
692
+ #
693
+ # @raise [TypeError]
694
+ #
695
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#247
696
+ def on_load(cpath = T.unsafe(nil), &block); end
697
+
698
+ # Configure a block to be called after setup and on each reload.
699
+ # If setup was already done, the block runs immediately.
700
+ #
701
+ #
702
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#225
703
+ def on_setup(&block); end
704
+
705
+ # Configure a block to be invoked right before a certain constant is removed.
706
+ # Supports multiple callbacks, and if there are many, they are executed in the
707
+ # order in which they were defined.
708
+ #
709
+ # loader.on_unload("Country") do |klass, _abspath|
710
+ # klass.clear_cache
711
+ # end
712
+ #
713
+ # Can also be configured for any removed constant:
714
+ #
715
+ # loader.on_unload do |cpath, value, abspath|
716
+ # # ...
717
+ # end
718
+ #
719
+ #
720
+ # @raise [TypeError]
721
+ #
722
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#270
723
+ def on_unload(cpath = T.unsafe(nil), &block); end
724
+
725
+ # Pushes `path` to the list of root directories.
726
+ #
727
+ # Raises `Zeitwerk::Error` if `path` does not exist, or if another loader in
728
+ # the same process already manages that directory or one of its ascendants or
729
+ # descendants.
730
+ #
731
+ #
732
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#109
733
+ def push_dir(path, namespace: T.unsafe(nil)); end
734
+
735
+ # @return [Boolean]
736
+ #
737
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#187
738
+ def reloading_enabled?; end
739
+
740
+ # Returns the loader's tag.
741
+ #
742
+ # Implemented as a method instead of via attr_reader for symmetry with the
743
+ # writer below.
744
+ #
745
+ #
746
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#133
747
+ def tag; end
748
+
749
+ # Sets a tag for the loader, useful for logging.
750
+ #
751
+ #
752
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#140
753
+ def tag=(tag); end
754
+
755
+ private
756
+
757
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#307
758
+ def actual_roots; end
759
+
760
+ # @return [Boolean]
761
+ #
762
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#332
763
+ def collapse?(dir); end
764
+
765
+ # The actual collection of absolute directory names at the time the collapse
766
+ # glob patterns were expanded. Computed on setup, and recomputed on reload.
767
+ #
768
+ #
769
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#56
770
+ def collapse_dirs; end
771
+
772
+ # Absolute paths of directories or glob patterns to be collapsed.
773
+ #
774
+ #
775
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#49
776
+ def collapse_glob_patterns; end
777
+
778
+ # Absolute paths of files or directories not to be eager loaded.
779
+ #
780
+ #
781
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#62
782
+ def eager_load_exclusions; end
783
+
784
+ # @return [Boolean]
785
+ #
786
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#319
787
+ def excluded_from_eager_load?(abspath); end
788
+
789
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#342
790
+ def expand_glob_patterns(glob_patterns); end
791
+
792
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#337
793
+ def expand_paths(paths); end
794
+
795
+ # Absolute paths of files, directories, or glob patterns to be ignored.
796
+ #
797
+ #
798
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#35
799
+ def ignored_glob_patterns; end
800
+
801
+ # @return [Boolean]
802
+ #
803
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#302
804
+ def ignored_path?(abspath); end
805
+
806
+ # The actual collection of absolute file and directory names at the time the
807
+ # ignored glob patterns were expanded. Computed on setup, and recomputed on
808
+ # reload.
809
+ #
810
+ #
811
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#43
812
+ def ignored_paths; end
813
+
814
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#289
815
+ def ignores?(abspath); end
816
+
817
+ # User-oriented callbacks to be fired when a constant is loaded.
818
+ #
819
+ #
820
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#75
821
+ def on_load_callbacks; end
822
+
823
+ # User-oriented callbacks to be fired on setup and on reload.
824
+ #
825
+ #
826
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#68
827
+ def on_setup_callbacks; end
828
+
829
+ # User-oriented callbacks to be fired before constants are removed.
830
+ #
831
+ #
832
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#82
833
+ def on_unload_callbacks; end
834
+
835
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#354
836
+ def recompute_collapse_dirs; end
837
+
838
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#349
839
+ def recompute_ignored_paths; end
840
+
841
+ # @return [Boolean]
842
+ #
843
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#314
844
+ def root_dir?(dir); end
845
+
846
+ # Absolute paths of the root directories, mapped to their respective root namespaces:
847
+ #
848
+ # "/Users/fxn/blog/app/channels" => Object,
849
+ # "/Users/fxn/blog/app/adapters" => ActiveJob::QueueAdapters,
850
+ # ...
851
+ #
852
+ # Stored in a hash to preserve order, easily handle duplicates, and have a
853
+ # fast lookup by directory.
854
+ #
855
+ # This is a private collection maintained by the loader. The public
856
+ # interface for it is `push_dir` and `dirs`.
857
+ #
858
+ #
859
+ # source://zeitwerk//lib/zeitwerk/loader/config.rb#29
860
+ def roots; end
861
+ end
862
+
863
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#1
864
+ module Zeitwerk::Loader::EagerLoad
865
+ # Eager loads all files in the root directories, recursively. Files do not
866
+ # need to be in `$LOAD_PATH`, absolute file names are used. Ignored and
867
+ # shadowed files are not eager loaded. You can opt-out specifically in
868
+ # specific files and directories with `do_not_eager_load`, and that can be
869
+ # overridden passing `force: true`.
870
+ #
871
+ #
872
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#9
873
+ def eager_load(force: T.unsafe(nil)); end
874
+
875
+ # @raise [Zeitwerk::SetupRequired]
876
+ #
877
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#32
878
+ def eager_load_dir(path); end
879
+
880
+ # @raise [Zeitwerk::SetupRequired]
881
+ #
882
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#74
883
+ def eager_load_namespace(mod); end
884
+
885
+ # Loads the given Ruby file.
886
+ #
887
+ # Raises if the argument is ignored, shadowed, or not managed by the receiver.
888
+ #
889
+ # The method is implemented as `constantize` for files, in a sense, to be able
890
+ # to descend orderly and make sure the file is loadable.
891
+ #
892
+ #
893
+ # @raise [Zeitwerk::Error]
894
+ #
895
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#116
896
+ def load_file(path); end
897
+
898
+ private
899
+
900
+ # The caller is responsible for making sure `namespace` is the namespace that
901
+ # corresponds to `dir`.
902
+ #
903
+ #
904
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#160
905
+ def actual_eager_load_dir(dir, namespace, force: T.unsafe(nil)); end
906
+
907
+ # In order to invoke this method, the caller has to ensure `child` is a
908
+ # strict namespace descendant of `root_namespace`.
909
+ #
910
+ #
911
+ # source://zeitwerk//lib/zeitwerk/loader/eager_load.rb#193
912
+ def eager_load_child_namespace(child, child_name, root_dir, root_namespace); end
913
+ end
914
+
915
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#3
916
+ module Zeitwerk::Loader::Helpers
917
+ private
918
+
919
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#107
920
+ def cname_for(basename, abspath); end
921
+
922
+ # @return [Boolean]
923
+ #
924
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#83
925
+ def dir?(path); end
926
+
927
+ # Looks for a Ruby file using breadth-first search. This type of search is
928
+ # important to list as less directories as possible and return fast in the
929
+ # common case in which there are Ruby files.
930
+ #
931
+ #
932
+ # @return [Boolean]
933
+ #
934
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#56
935
+ def has_at_least_one_ruby_file?(dir); end
936
+
937
+ # @return [Boolean]
938
+ #
939
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#88
940
+ def hidden?(basename); end
941
+
942
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#7
943
+ def log(message); end
944
+
945
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#15
946
+ def ls(dir); end
947
+
948
+ # @return [Boolean]
949
+ #
950
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#78
951
+ def ruby?(path); end
952
+
953
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#93
954
+ def walk_up(abspath); end
955
+ end
956
+
957
+ # --- Inflection --------------------------------------------------------------------------------
958
+ #
959
+ # source://zeitwerk//lib/zeitwerk/loader/helpers.rb#103
960
+ module Zeitwerk::Loader::Helpers::CNAME_VALIDATOR; end
961
+
962
+ # source://zeitwerk//lib/zeitwerk/loader.rb#21
963
+ Zeitwerk::Loader::MUTEX = T.let(T.unsafe(nil), Thread::Mutex)
964
+
965
+ # source://zeitwerk//lib/zeitwerk/error.rb#14
966
+ class Zeitwerk::NameError < ::NameError; end
967
+
968
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#1
969
+ class Zeitwerk::NullInflector
970
+ # source://zeitwerk//lib/zeitwerk/null_inflector.rb#3
971
+ def camelize(basename, _abspath); end
972
+ end
973
+
974
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#3
975
+ module Zeitwerk::RealModName
976
+ # Returns the real name of the class or module.
977
+ #
978
+ # We need this indirection becasue the `name` method can be overridden, and
979
+ # because in practice what we really need is the constant paths of modules
980
+ # with a permanent name, not so much what the user considers to be the name of
981
+ # a certain class or module of theirs.
982
+ #
983
+ #
984
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#16
985
+ def real_mod_name(mod); end
986
+ end
987
+
988
+ # source://zeitwerk//lib/zeitwerk/real_mod_name.rb#5
989
+ Zeitwerk::RealModName::UNBOUND_METHOD_MODULE_NAME = T.let(T.unsafe(nil), UnboundMethod)
990
+
991
+ # source://zeitwerk//lib/zeitwerk/registry.rb#4
992
+ module Zeitwerk::Registry
993
+ class << self
994
+ # Maps absolute paths to the loaders responsible for them.
995
+ #
996
+ # This information is used by our decorated `Kernel#require` to be able to
997
+ # invoke callbacks and autovivify modules.
998
+ #
999
+ #
1000
+ # @private
1001
+ #
1002
+ # source://zeitwerk//lib/zeitwerk/registry.rb#31
1003
+ def autoloads; end
1004
+
1005
+ # @private
1006
+ #
1007
+ # source://zeitwerk//lib/zeitwerk/registry.rb#35
1008
+ def explicit_namespaces; end
1009
+
1010
+ # Registers gem loaders to let `for_gem` be idempotent in case of reload.
1011
+ #
1012
+ #
1013
+ # @private
1014
+ #
1015
+ # source://zeitwerk//lib/zeitwerk/registry.rb#22
1016
+ def gem_loaders_by_root_file; end
1017
+
1018
+ # @private
1019
+ #
1020
+ # source://zeitwerk//lib/zeitwerk/registry.rb#39
1021
+ def inceptions; end
1022
+
1023
+ # This method returns always a loader, the same instance for the same root
1024
+ # file. That is how Zeitwerk::Loader.for_gem is idempotent.
1025
+ #
1026
+ #
1027
+ # @private
1028
+ #
1029
+ # source://zeitwerk//lib/zeitwerk/registry.rb#52
1030
+ def loader_for_gem(root_file, namespace:, warn_on_extra_files:); end
1031
+
1032
+ # Keeps track of all loaders. Useful to broadcast messages and to prevent
1033
+ # them from being garbage collected.
1034
+ #
1035
+ #
1036
+ # @private
1037
+ #
1038
+ # source://zeitwerk//lib/zeitwerk/registry.rb#16
1039
+ def loaders; end
1040
+
1041
+ # @private
1042
+ #
1043
+ # source://zeitwerk//lib/zeitwerk/registry.rb#43
1044
+ def unregister_loader(loader); end
1045
+ end
1046
+ end
1047
+
1048
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#2
1049
+ class Zeitwerk::Registry::Autoloads
1050
+ # @return [Autoloads] a new instance of Autoloads
1051
+ #
1052
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#4
1053
+ def initialize; end
1054
+
1055
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#34
1056
+ def clear; end
1057
+
1058
+ # @return [Boolean]
1059
+ #
1060
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#29
1061
+ def empty?; end
1062
+
1063
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#9
1064
+ def register(abspath, loader); end
1065
+
1066
+ # @return [Boolean]
1067
+ #
1068
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#14
1069
+ def registered?(path); end
1070
+
1071
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#19
1072
+ def unregister(abspath); end
1073
+
1074
+ # source://zeitwerk//lib/zeitwerk/registry/autoloads.rb#24
1075
+ def unregister_loader(loader); end
1076
+ end
1077
+
1078
+ # A registry for explicit namespaces.
1079
+ #
1080
+ # When a loader determines that a certain file should define an explicit
1081
+ # namespace, it registers it here, associating its cref with itself.
1082
+ #
1083
+ # If the namespace is autoloaded, our const_added callback retrieves its
1084
+ # loader by calling loader_for. That way, the loader is able to scan the
1085
+ # subdirectories that conform the namespace and set autoloads for their
1086
+ # expected constants just in time.
1087
+ #
1088
+ # Once autoloaded, the namespace is unregistered.
1089
+ #
1090
+ # The implementation assumes an explicit namespace is managed by one loader.
1091
+ # Loaders that reopen namespaces owned by other projects are responsible for
1092
+ # loading their constant before setup. This is documented.
1093
+ #
1094
+ # **This is a private module.**
1095
+ #
1096
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#21
1097
+ class Zeitwerk::Registry::ExplicitNamespaces
1098
+ # @return [ExplicitNamespaces] a new instance of ExplicitNamespaces
1099
+ #
1100
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#23
1101
+ def initialize; end
1102
+
1103
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#57
1104
+ def clear; end
1105
+
1106
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#40
1107
+ def loader_for(mod, cname); end
1108
+
1109
+ # Registers `cref` as being the constant path of an explicit namespace
1110
+ # managed by `loader`.
1111
+ #
1112
+ #
1113
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#35
1114
+ def register(cref, loader); end
1115
+
1116
+ # This is an internal method only used by the test suite.
1117
+ #
1118
+ #
1119
+ # @return [Boolean]
1120
+ #
1121
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#52
1122
+ def registered?(cref); end
1123
+
1124
+ # source://zeitwerk//lib/zeitwerk/registry/explicit_namespaces.rb#45
1125
+ def unregister_loader(loader); end
1126
+ end
1127
+
1128
+ # Loaders know their own inceptions, but there is a use case in which we need
1129
+ # to know if a given cpath is an inception globally. This is what this
1130
+ # registry is for.
1131
+ #
1132
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#5
1133
+ class Zeitwerk::Registry::Inceptions
1134
+ # @return [Inceptions] a new instance of Inceptions
1135
+ #
1136
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#7
1137
+ def initialize; end
1138
+
1139
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#27
1140
+ def clear; end
1141
+
1142
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#12
1143
+ def register(cref, abspath); end
1144
+
1145
+ # @return [Boolean]
1146
+ #
1147
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#17
1148
+ def registered?(cref); end
1149
+
1150
+ # source://zeitwerk//lib/zeitwerk/registry/inceptions.rb#22
1151
+ def unregister(cref); end
1152
+ end
1153
+
1154
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#2
1155
+ class Zeitwerk::Registry::Loaders
1156
+ # @return [Loaders] a new instance of Loaders
1157
+ #
1158
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#4
1159
+ def initialize; end
1160
+
1161
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#29
1162
+ def clear; end
1163
+
1164
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#9
1165
+ def each(&block); end
1166
+
1167
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#14
1168
+ def register(loader); end
1169
+
1170
+ # @return [Boolean]
1171
+ #
1172
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#24
1173
+ def registered?(loader); end
1174
+
1175
+ # source://zeitwerk//lib/zeitwerk/registry/loaders.rb#19
1176
+ def unregister(loader); end
1177
+ end
1178
+
1179
+ # source://zeitwerk//lib/zeitwerk/error.rb#7
1180
+ class Zeitwerk::ReloadingDisabledError < ::Zeitwerk::Error
1181
+ # @return [ReloadingDisabledError] a new instance of ReloadingDisabledError
1182
+ #
1183
+ # source://zeitwerk//lib/zeitwerk/error.rb#9
1184
+ def initialize; end
1185
+ end
1186
+
1187
+ # source://zeitwerk//lib/zeitwerk/error.rb#17
1188
+ class Zeitwerk::SetupRequired < ::Zeitwerk::Error
1189
+ # @return [SetupRequired] a new instance of SetupRequired
1190
+ #
1191
+ # source://zeitwerk//lib/zeitwerk/error.rb#19
1192
+ def initialize; end
1193
+ end
1194
+
1195
+ # source://zeitwerk//lib/zeitwerk/version.rb#5
1196
+ Zeitwerk::VERSION = T.let(T.unsafe(nil), String)