phlex-stimulus 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 (147) hide show
  1. checksums.yaml +7 -0
  2. data/.ruby-version +1 -0
  3. data/CHANGELOG.md +16 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +341 -0
  6. data/Rakefile +12 -0
  7. data/lib/generators/phlex/stimulus/controller/USAGE +5 -0
  8. data/lib/generators/phlex/stimulus/controller/controller_generator.rb +49 -0
  9. data/lib/generators/phlex/stimulus/controller/templates/component.rb.erb +30 -0
  10. data/lib/generators/phlex/stimulus/controller/templates/controller.ts.erb +23 -0
  11. data/lib/generators/phlex/stimulus/generator_mixin.rb +21 -0
  12. data/lib/generators/phlex/stimulus/install/USAGE +5 -0
  13. data/lib/generators/phlex/stimulus/install/install_generator.rb +111 -0
  14. data/lib/generators/phlex/stimulus/install/templates/app/components/base.rb.erb +29 -0
  15. data/lib/generators/phlex/stimulus/install/templates/app/components/chain_controller.rb.erb +29 -0
  16. data/lib/generators/phlex/stimulus/install/templates/app/components/classlist_controller.rb.erb +30 -0
  17. data/lib/generators/phlex/stimulus/install/templates/app/components/controller.rb.erb +10 -0
  18. data/lib/generators/phlex/stimulus/install/templates/app/components/controller_chain.rb.erb +32 -0
  19. data/lib/generators/phlex/stimulus/install/templates/app/components/controller_template.rb.erb +24 -0
  20. data/lib/generators/phlex/stimulus/install/templates/app/components/log_controller.rb.erb +33 -0
  21. data/lib/generators/phlex/stimulus/install/templates/app/components/sleep_controller.rb.erb +30 -0
  22. data/lib/generators/phlex/stimulus/install/templates/app/components.rb.erb +7 -0
  23. data/lib/generators/phlex/stimulus/install/templates/app/javascript/application.ts.erb +5 -0
  24. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/application.ts.erb +10 -0
  25. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/chain_controller.ts.erb +32 -0
  26. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/chainable_controller.ts.erb +44 -0
  27. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/classlist_controller.ts.erb +30 -0
  28. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/index.ts.erb +4 -0
  29. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/log_controller.ts.erb +25 -0
  30. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/sleep_controller.ts.erb +19 -0
  31. data/lib/generators/phlex/stimulus/install/templates/app/javascript/controllers/typed_controller.ts.erb +53 -0
  32. data/lib/generators/phlex/stimulus/install/templates/app/javascript/utils/misc.ts.erb +37 -0
  33. data/lib/generators/phlex/stimulus/install/templates/app/javascript/utils/template.ts.erb +11 -0
  34. data/lib/phlex/stimulus/components/base.rb +81 -0
  35. data/lib/phlex/stimulus/components/controller.rb +170 -0
  36. data/lib/phlex/stimulus/components.rb +9 -0
  37. data/lib/phlex/stimulus/version.rb +8 -0
  38. data/lib/phlex/stimulus.rb +15 -0
  39. data/sorbet/config +7 -0
  40. data/sorbet/rbi/annotations/.gitattributes +1 -0
  41. data/sorbet/rbi/annotations/actionmailer.rbi +15 -0
  42. data/sorbet/rbi/annotations/actionpack.rbi +430 -0
  43. data/sorbet/rbi/annotations/actionview.rbi +75 -0
  44. data/sorbet/rbi/annotations/activejob.rbi +50 -0
  45. data/sorbet/rbi/annotations/activemodel.rbi +119 -0
  46. data/sorbet/rbi/annotations/activerecord.rbi +172 -0
  47. data/sorbet/rbi/annotations/activesupport.rbi +561 -0
  48. data/sorbet/rbi/annotations/globalid.rbi +30 -0
  49. data/sorbet/rbi/annotations/minitest.rbi +116 -0
  50. data/sorbet/rbi/annotations/railties.rbi +104 -0
  51. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  52. data/sorbet/rbi/dsl/.gitattributes +1 -0
  53. data/sorbet/rbi/dsl/active_support/callbacks.rbi +21 -0
  54. data/sorbet/rbi/gems/.gitattributes +1 -0
  55. data/sorbet/rbi/gems/action_text-trix@2.1.19.rbi +9 -0
  56. data/sorbet/rbi/gems/actioncable@8.1.3.rbi +9 -0
  57. data/sorbet/rbi/gems/actionmailbox@8.1.3.rbi +9 -0
  58. data/sorbet/rbi/gems/actionmailer@8.1.3.rbi +9 -0
  59. data/sorbet/rbi/gems/actionpack@8.1.3.rbi +20478 -0
  60. data/sorbet/rbi/gems/actiontext@8.1.3.rbi +9 -0
  61. data/sorbet/rbi/gems/actionview@8.1.3.rbi +14722 -0
  62. data/sorbet/rbi/gems/activejob@8.1.3.rbi +9 -0
  63. data/sorbet/rbi/gems/activemodel@8.1.3.rbi +9 -0
  64. data/sorbet/rbi/gems/activerecord@8.1.3.rbi +9 -0
  65. data/sorbet/rbi/gems/activestorage@8.1.3.rbi +9 -0
  66. data/sorbet/rbi/gems/activesupport@8.1.3.rbi +20153 -0
  67. data/sorbet/rbi/gems/ast@2.4.3.rbi +550 -0
  68. data/sorbet/rbi/gems/base64@0.3.0.rbi +545 -0
  69. data/sorbet/rbi/gems/benchmark@0.5.0.rbi +621 -0
  70. data/sorbet/rbi/gems/booleans@0.1.3.rbi +31 -0
  71. data/sorbet/rbi/gems/builder@3.3.0.rbi +9 -0
  72. data/sorbet/rbi/gems/byebug@12.0.0.rbi +49 -0
  73. data/sorbet/rbi/gems/concurrent-ruby@1.3.8.rbi +10656 -0
  74. data/sorbet/rbi/gems/connection_pool@3.0.2.rbi +9 -0
  75. data/sorbet/rbi/gems/crass@1.0.7.rbi +648 -0
  76. data/sorbet/rbi/gems/date@3.5.1.rbi +391 -0
  77. data/sorbet/rbi/gems/drb@2.2.3.rbi +9 -0
  78. data/sorbet/rbi/gems/erb@6.0.6.rbi +1600 -0
  79. data/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  80. data/sorbet/rbi/gems/globalid@1.4.0.rbi +9 -0
  81. data/sorbet/rbi/gems/i18n@1.15.2.rbi +2285 -0
  82. data/sorbet/rbi/gems/io-console@0.8.2.rbi +9 -0
  83. data/sorbet/rbi/gems/json@2.21.1.rbi +2289 -0
  84. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +189 -0
  85. data/sorbet/rbi/gems/logger@1.7.0.rbi +896 -0
  86. data/sorbet/rbi/gems/loofah@2.25.2.rbi +1134 -0
  87. data/sorbet/rbi/gems/mail@2.9.1.rbi +9 -0
  88. data/sorbet/rbi/gems/marcel@1.2.1.rbi +9 -0
  89. data/sorbet/rbi/gems/mini_mime@1.1.5.rbi +9 -0
  90. data/sorbet/rbi/gems/minitest@6.0.6.rbi +1482 -0
  91. data/sorbet/rbi/gems/net-imap@0.6.4.1.rbi +9 -0
  92. data/sorbet/rbi/gems/net-pop@0.1.2.rbi +9 -0
  93. data/sorbet/rbi/gems/net-protocol@0.2.2.rbi +244 -0
  94. data/sorbet/rbi/gems/net-smtp@0.5.1.rbi +9 -0
  95. data/sorbet/rbi/gems/netrc@0.11.0.rbi +147 -0
  96. data/sorbet/rbi/gems/nio4r@2.7.5.rbi +9 -0
  97. data/sorbet/rbi/gems/nokogiri@1.19.4.rbi +8168 -0
  98. data/sorbet/rbi/gems/parallel@1.28.0.rbi +270 -0
  99. data/sorbet/rbi/gems/phlex-rails@2.4.0.rbi +1945 -0
  100. data/sorbet/rbi/gems/phlex@2.4.1.rbi +1413 -0
  101. data/sorbet/rbi/gems/pp@0.6.4.rbi +387 -0
  102. data/sorbet/rbi/gems/prettyprint@0.2.0.rbi +455 -0
  103. data/sorbet/rbi/gems/prism@1.9.0.rbi +42226 -0
  104. data/sorbet/rbi/gems/racc@1.8.1.rbi +165 -0
  105. data/sorbet/rbi/gems/rack-session@2.1.2.rbi +756 -0
  106. data/sorbet/rbi/gems/rack-test@2.2.0.rbi +681 -0
  107. data/sorbet/rbi/gems/rack@3.2.6.rbi +4653 -0
  108. data/sorbet/rbi/gems/rackup@2.3.1.rbi +9 -0
  109. data/sorbet/rbi/gems/rails-dom-testing@2.3.0.rbi +517 -0
  110. data/sorbet/rbi/gems/rails-html-sanitizer@1.7.1.rbi +620 -0
  111. data/sorbet/rbi/gems/rails@8.1.3.rbi +9 -0
  112. data/sorbet/rbi/gems/railties@8.1.3.rbi +3507 -0
  113. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +362 -0
  114. data/sorbet/rbi/gems/rake@13.4.2.rbi +3130 -0
  115. data/sorbet/rbi/gems/rbi@0.4.0.rbi +5706 -0
  116. data/sorbet/rbi/gems/rbs@4.0.3.rbi +6908 -0
  117. data/sorbet/rbi/gems/refract@1.1.0.rbi +9 -0
  118. data/sorbet/rbi/gems/reline@0.6.3.rbi +2446 -0
  119. data/sorbet/rbi/gems/require-hooks@0.4.0.rbi +152 -0
  120. data/sorbet/rbi/gems/rexml@3.4.4.rbi +4905 -0
  121. data/sorbet/rbi/gems/rubocop-espago@1.3.0.rbi +9 -0
  122. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +988 -0
  123. data/sorbet/rbi/gems/rubydex@0.2.9.rbi +841 -0
  124. data/sorbet/rbi/gems/securerandom@0.4.1.rbi +75 -0
  125. data/sorbet/rbi/gems/shoulda-context@2.0.0.rbi +544 -0
  126. data/sorbet/rbi/gems/spoom@1.8.4.rbi +6738 -0
  127. data/sorbet/rbi/gems/tapioca@0.19.2.rbi +3599 -0
  128. data/sorbet/rbi/gems/thor@1.5.0.rbi +3870 -0
  129. data/sorbet/rbi/gems/timeout@0.6.1.rbi +200 -0
  130. data/sorbet/rbi/gems/tsort@0.2.0.rbi +389 -0
  131. data/sorbet/rbi/gems/tzinfo@2.0.6.rbi +5474 -0
  132. data/sorbet/rbi/gems/unicode-display_width@3.2.0.rbi +130 -0
  133. data/sorbet/rbi/gems/unicode-emoji@4.2.0.rbi +332 -0
  134. data/sorbet/rbi/gems/uri@1.1.1.rbi +2402 -0
  135. data/sorbet/rbi/gems/useragent@0.16.11.rbi +9 -0
  136. data/sorbet/rbi/gems/websocket-driver@0.8.2.rbi +9 -0
  137. data/sorbet/rbi/gems/websocket-extensions@0.1.5.rbi +9 -0
  138. data/sorbet/rbi/gems/zeitwerk@2.8.2.rbi +9 -0
  139. data/sorbet/rbi/shims/gems/parser.rbi +12 -0
  140. data/sorbet/rbi/shims/gems/rails.rbi +55 -0
  141. data/sorbet/rbi/shims/gems/refract.rbi +13 -0
  142. data/sorbet/rbi/shims/gems/shoulda-context.rbi +16 -0
  143. data/sorbet/tapioca/compilers/phlex_controller.rb +80 -0
  144. data/sorbet/tapioca/config.yml +26 -0
  145. data/sorbet/tapioca/extensions/load_gem.rb +1 -0
  146. data/sorbet/tapioca/require.rb +4 -0
  147. metadata +266 -0
@@ -0,0 +1,561 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This file was pulled from a central RBI files repository.
5
+ # Please run `bin/tapioca annotations` to update it.
6
+
7
+ module ActiveSupport::Testing::Declarative
8
+ sig { params(name: String, block: T.proc.bind(T.untyped).void).void }
9
+ def test(name, &block); end
10
+ end
11
+
12
+ class ActiveSupport::EnvironmentInquirer
13
+ sig { returns(T::Boolean) }
14
+ def development?; end
15
+
16
+ sig { returns(T::Boolean) }
17
+ def production?; end
18
+
19
+ sig { returns(T::Boolean) }
20
+ def test?; end
21
+
22
+ # @method_missing: delegated to String through ActiveSupport::StringInquirer
23
+ sig { returns(T::Boolean) }
24
+ def local?; end
25
+ end
26
+
27
+ class ActiveSupport::HashWithIndifferentAccess < Hash
28
+ K = type_member { {fixed: T.any(String, Symbol)} }
29
+ V = type_member { {fixed: T.untyped} }
30
+ Elem = type_member { {fixed: T.untyped} }
31
+
32
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
33
+ def with_indifferent_access; end
34
+
35
+ sig { type_parameters(:V2, :ConflictRes).params(other_hash: T::Hash[T.untyped, T.type_parameter(:V2)], block: T.nilable(
36
+ T.proc.params(
37
+ key: String,
38
+ old_val: T.untyped,
39
+ new_val: T.type_parameter(:V2),
40
+ ).returns(T.type_parameter(:ConflictRes))
41
+ )).returns(ActiveSupport::HashWithIndifferentAccess) }
42
+ def deep_merge(other_hash, &block); end
43
+
44
+ sig { type_parameters(:V2, :ConflictRes).params(other_hash: T::Hash[T.untyped, T.type_parameter(:V2)], block: T.nilable(
45
+ T.proc.params(
46
+ key: String,
47
+ old_val: T.untyped,
48
+ new_val: T.type_parameter(:V2),
49
+ ).returns(T.type_parameter(:ConflictRes))
50
+ )).returns(ActiveSupport::HashWithIndifferentAccess) }
51
+ def deep_merge!(other_hash, &block); end
52
+
53
+ # @version >= 7.2
54
+ sig { params(other: T.untyped).returns(T::Boolean) }
55
+ def deep_merge?(other); end
56
+ end
57
+
58
+ module ActiveSupport::Testing::SetupAndTeardown::ClassMethods
59
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
60
+ def setup(*args, &block); end
61
+
62
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.untyped).void)).void }
63
+ def teardown(*args, &block); end
64
+ end
65
+
66
+ class ActiveSupport::TestCase
67
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
68
+ def self.setup(*args, &block); end
69
+
70
+ sig { params(args: T.untyped, block: T.nilable(T.proc.bind(T.attached_class).void)).void }
71
+ def self.teardown(*args, &block); end
72
+
73
+ sig { params(name: String, block: T.proc.bind(T.attached_class).void).void }
74
+ def self.test(name, &block); end
75
+ end
76
+
77
+ class ActiveSupport::TimeWithZone
78
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
79
+ include ::DateAndTime::Zones
80
+
81
+ # @shim: Methods on ActiveSupport::TimeWithZone are delegated to `Time` using `method_missing
82
+ include ::DateAndTime::Calculations
83
+
84
+ sig { returns(FalseClass) }
85
+ def blank?; end
86
+
87
+ # @shim: since `present?` is always true, `presence` always returns `self`
88
+ sig { returns(T.self_type) }
89
+ def presence; end
90
+
91
+ # @shim: since `blank?` is always false, `present?` always returns `true`
92
+ sig { returns(TrueClass) }
93
+ def present?; end
94
+ end
95
+
96
+ class Object
97
+ sig { returns(T::Boolean) }
98
+ def blank?; end
99
+
100
+ sig { returns(FalseClass) }
101
+ def html_safe?; end
102
+
103
+ sig { returns(T.nilable(T.self_type)) }
104
+ def presence; end
105
+
106
+ sig { params(another_object: T.untyped).returns(T.nilable(T.self_type)) }
107
+ def presence_in(another_object); end
108
+
109
+ sig { returns(T::Boolean) }
110
+ def present?; end
111
+ end
112
+
113
+ class Hash
114
+ sig { returns(T::Boolean) }
115
+ def blank?; end
116
+
117
+ sig { returns(T::Boolean) }
118
+ def present?; end
119
+
120
+ sig { returns(T::Boolean) }
121
+ def extractable_options?; end
122
+
123
+ # @version >= 6.1.0
124
+ sig { returns(T.self_type) }
125
+ def compact_blank; end
126
+
127
+ sig { returns(ActiveSupport::HashWithIndifferentAccess) }
128
+ def with_indifferent_access; end
129
+
130
+ sig { type_parameters(:K2, :V2, :ConflictRes).params(other_hash: T::Hash[T.type_parameter(:K2), T.type_parameter(:V2)], block: T.nilable(
131
+ T.proc.params(
132
+ key: T.any(K, T.type_parameter(:K2)),
133
+ old_val: V,
134
+ new_val: T.type_parameter(:V2),
135
+ ).returns(T.type_parameter(:ConflictRes))
136
+ )).returns(T::Hash[T.any(K, T.type_parameter(:K2)), T.any(V, T.type_parameter(:V2), T.type_parameter(:ConflictRes))]) }
137
+ def deep_merge(other_hash, &block); end
138
+
139
+ sig { type_parameters(:K2, :V2, :ConflictRes).params(other_hash: T::Hash[T.type_parameter(:K2), T.type_parameter(:V2)], block: T.nilable(
140
+ T.proc.params(
141
+ key: T.any(K, T.type_parameter(:K2)),
142
+ old_val: V,
143
+ new_val: T.type_parameter(:V2),
144
+ ).returns(T.type_parameter(:ConflictRes))
145
+ )).returns(T::Hash[T.any(K, T.type_parameter(:K2)), T.any(V, T.type_parameter(:V2), T.type_parameter(:ConflictRes))]) }
146
+ def deep_merge!(other_hash, &block); end
147
+
148
+ # @version >= 7.2
149
+ sig { params(other: T.untyped).returns(T::Boolean) }
150
+ def deep_merge?(other); end
151
+ end
152
+
153
+ class Array
154
+ sig { returns(T::Boolean) }
155
+ def blank?; end
156
+
157
+ sig { returns(T::Boolean) }
158
+ def present?; end
159
+
160
+ sig { params(position: Integer).returns(T.self_type) }
161
+ def from(position); end
162
+
163
+ sig { params(position: Integer).returns(T.self_type) }
164
+ def to(position); end
165
+
166
+ sig { params(elements: T.untyped).returns(T::Array[T.untyped]) }
167
+ def including(*elements); end
168
+
169
+ sig { params(elements: T.untyped).returns(T.self_type) }
170
+ def excluding(*elements); end
171
+
172
+ sig { params(elements: T.untyped).returns(T.self_type) }
173
+ def without(*elements); end
174
+
175
+ sig { returns(T.nilable(Elem)) }
176
+ def second; end
177
+
178
+ sig { returns(T.nilable(Elem)) }
179
+ def third; end
180
+
181
+ sig { returns(T.nilable(Elem)) }
182
+ def fourth; end
183
+
184
+ sig { returns(T.nilable(Elem)) }
185
+ def fifth; end
186
+
187
+ sig { returns(T.nilable(Elem)) }
188
+ def forty_two; end
189
+
190
+ sig { returns(T.nilable(Elem)) }
191
+ def third_to_last; end
192
+
193
+ sig { returns(T.nilable(Elem)) }
194
+ def second_to_last; end
195
+
196
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
197
+ def to_sentence(options = {}); end
198
+
199
+ sig { params(format: Symbol).returns(String) }
200
+ def to_fs(format = :default); end
201
+
202
+ sig { params(format: Symbol).returns(String) }
203
+ def to_formatted_s(format = :default); end
204
+
205
+ sig { returns(String) }
206
+ def to_xml; end
207
+
208
+ sig { returns(T::Hash[T.untyped, T.untyped]) }
209
+ def extract_options!; end
210
+
211
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
212
+ def in_groups(number, fill_with = T.unsafe(nil), &block); end
213
+
214
+ sig { type_parameters(:FillType).params(number: Integer, fill_with: T.type_parameter(:FillType), block: T.nilable(T.proc.params(group: T::Array[T.any(Elem, T.type_parameter(:FillType))]).void)).returns(T::Array[T::Array[T.any(Elem, T.type_parameter(:FillType))]]) }
215
+ def in_groups_of(number, fill_with = T.unsafe(nil), &block); end
216
+
217
+ sig { params(value: T.untyped, block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T::Array[T::Array[Elem]]) }
218
+ def split(value = nil, &block); end
219
+
220
+ sig { params(block: T.nilable(T.proc.params(element: Elem).returns(T.untyped))).returns(T.any(T::Array[Elem], T::Enumerator[Elem])) }
221
+ def extract!(&block); end
222
+
223
+ sig { returns(ActiveSupport::ArrayInquirer) }
224
+ def inquiry; end
225
+
226
+ sig { params(object: T.untyped).returns(T::Array[T.untyped]) }
227
+ def self.wrap(object); end
228
+ end
229
+
230
+ class Date
231
+ sig { returns(FalseClass) }
232
+ def blank?; end
233
+
234
+ # @shim: since `present?` is always true, `presence` always returns `self`
235
+ sig { returns(T.self_type) }
236
+ def presence; end
237
+
238
+ # @shim: since `blank?` is always false, `present?` always returns `true`
239
+ sig { returns(TrueClass) }
240
+ def present?; end
241
+ end
242
+
243
+ class DateTime
244
+ sig { returns(FalseClass) }
245
+ def blank?; end
246
+
247
+ # @shim: since `present?` is always true, `presence` always returns `self`
248
+ sig { returns(T.self_type) }
249
+ def presence; end
250
+
251
+ # @shim: since `blank?` is always false, `present?` always returns `true`
252
+ sig { returns(TrueClass) }
253
+ def present?; end
254
+ end
255
+
256
+ module Enumerable
257
+ sig { type_parameters(:Block).params(block: T.proc.params(arg0: Elem).returns(T.type_parameter(:Block))).returns(T::Hash[T.type_parameter(:Block), Elem]) }
258
+ sig { returns(T::Enumerable[T.untyped]) }
259
+ def index_by(&block); end
260
+
261
+ sig { type_parameters(:Block).params(block: T.proc.params(arg0: Elem).returns(T.type_parameter(:Block))).returns(T::Hash[Elem, T.type_parameter(:Block)]) }
262
+ sig { returns(T::Enumerable[T.untyped]) }
263
+ sig { type_parameters(:Default).params(default: T.type_parameter(:Default)).returns(T::Hash[Elem, T.type_parameter(:Default)]) }
264
+ def index_with(default = nil, &block); end
265
+
266
+ sig { params(block: T.proc.params(arg0: Elem).returns(BasicObject)).returns(T::Boolean) }
267
+ sig { returns(T::Boolean) }
268
+ def many?(&block); end
269
+
270
+ sig { params(object: BasicObject).returns(T::Boolean) }
271
+ def exclude?(object); end
272
+
273
+ # @version >= 6.1.0
274
+ sig { returns(T::Array[Elem]) }
275
+ def compact_blank; end
276
+
277
+ # @version >= 7.0.0
278
+ sig { returns(Elem) }
279
+ def sole; end
280
+ end
281
+
282
+ class NilClass
283
+ sig { returns(TrueClass) }
284
+ def blank?; end
285
+
286
+ # @shim: since `present?` is always false, `presence` always returns `nil`
287
+ sig { returns(NilClass) }
288
+ def presence; end
289
+
290
+ # @shim: since `blank?` is always true, `present?` always returns `false`
291
+ sig { returns(FalseClass) }
292
+ def present?; end
293
+ end
294
+
295
+ class FalseClass
296
+ sig { returns(TrueClass) }
297
+ def blank?; end
298
+
299
+ # @shim: since `present?` is always false, `presence` always returns `nil`
300
+ sig { returns(NilClass) }
301
+ def presence; end
302
+
303
+ # @shim: since `blank?` is always true, `present?` always returns `false`
304
+ sig { returns(FalseClass) }
305
+ def present?; end
306
+ end
307
+
308
+ class TrueClass
309
+ sig { returns(FalseClass) }
310
+ def blank?; end
311
+
312
+ # @shim: since `present?` is always true, `presence` always returns `self`
313
+ sig { returns(T.self_type) }
314
+ def presence; end
315
+
316
+ # @shim: since `blank?` is always false, `present?` always returns `true`
317
+ sig { returns(TrueClass) }
318
+ def present?; end
319
+ end
320
+
321
+ class Numeric
322
+ sig { returns(FalseClass) }
323
+ def blank?; end
324
+
325
+ sig { returns(TrueClass) }
326
+ def html_safe?; end
327
+
328
+ # @shim: since `present?` is always true, `presence` always returns `self`
329
+ sig { returns(T.self_type) }
330
+ def presence; end
331
+
332
+ # @shim: since `blank?` is always false, `present?` always returns `true`
333
+ sig { returns(TrueClass) }
334
+ def present?; end
335
+ end
336
+
337
+ class Time
338
+ sig { returns(FalseClass) }
339
+ def blank?; end
340
+
341
+ # @shim: since `present?` is always true, `presence` always returns `self`
342
+ sig { returns(T.self_type) }
343
+ def presence; end
344
+
345
+ # @shim: since `blank?` is always false, `present?` always returns `true`
346
+ sig { returns(TrueClass) }
347
+ def present?; end
348
+
349
+ sig { returns(ActiveSupport::TimeZone) }
350
+ def self.zone; end
351
+
352
+ sig { returns(T.any(ActiveSupport::TimeWithZone, ::Time)) }
353
+ def self.current; end
354
+ end
355
+
356
+ class Symbol
357
+ sig { returns(T::Boolean) }
358
+ def blank?; end
359
+
360
+ sig { returns(T::Boolean) }
361
+ def present?; end
362
+
363
+ # alias for `#start_with?`
364
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
365
+ def starts_with?(*string_or_regexp); end
366
+
367
+ # alias for `#end_with?`
368
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
369
+ def ends_with?(*string_or_regexp); end
370
+ end
371
+
372
+ class String
373
+ sig { returns(TrueClass) }
374
+ def acts_like_string?; end
375
+
376
+ # This is the subset of `#[]` sigs that have just 1 parameter.
377
+ # https://github.com/sorbet/sorbet/blob/40ad87b4dc7be23fa00c1369ac9f927053c68907/rbi/core/string.rbi#L270-L303
378
+ sig { params(position: Integer).returns(T.nilable(String)) }
379
+ sig { params(position: T.any(T::Range[Integer], Regexp)).returns(T.nilable(String)) }
380
+ sig { params(position: String).returns(T.nilable(String)) }
381
+ def at(position); end
382
+
383
+ sig { returns(String) }
384
+ def as_json; end
385
+
386
+ sig { returns(T::Boolean) }
387
+ def blank?; end
388
+
389
+ sig { params(first_letter: Symbol).returns(String) }
390
+ def camelcase(first_letter = :upper); end
391
+
392
+ sig { params(first_letter: Symbol).returns(String) }
393
+ def camelize(first_letter = :upper); end
394
+
395
+ sig { returns(String) }
396
+ def classify; end
397
+
398
+ sig { returns(T.untyped) }
399
+ def constantize; end
400
+
401
+ sig { returns(String) }
402
+ def dasherize; end
403
+
404
+ sig { returns(String) }
405
+ def deconstantize; end
406
+
407
+ sig { returns(String) }
408
+ def demodulize; end
409
+
410
+ # alias for `#end_with?`
411
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
412
+ def ends_with?(*string_or_regexp); end
413
+
414
+ sig { returns(String) }
415
+ def downcase_first; end
416
+
417
+ sig { params(string: String).returns(T::Boolean) }
418
+ def exclude?(string); end
419
+
420
+ sig { params(limit: Integer).returns(String) }
421
+ def first(limit = 1); end
422
+
423
+ sig { params(separate_class_name_and_id_with_underscore: T::Boolean).returns(String) }
424
+ def foreign_key(separate_class_name_and_id_with_underscore = true); end
425
+
426
+ sig { params(position: Integer).returns(String) }
427
+ def from(position); end
428
+
429
+ sig { returns(ActiveSupport::SafeBuffer) }
430
+ def html_safe; end
431
+
432
+ sig { params(capitalize: T::Boolean, keep_id_suffix: T::Boolean).returns(String) }
433
+ def humanize(capitalize: true, keep_id_suffix: false); end
434
+
435
+ sig { params(zone: T.nilable(T.any(ActiveSupport::TimeZone, String))).returns(T.any(ActiveSupport::TimeWithZone, Time)) }
436
+ def in_time_zone(zone = ::Time.zone); end
437
+
438
+ sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(String) }
439
+ def indent(amount, indent_string = nil, indent_empty_lines = false); end
440
+
441
+ sig { params(amount: Integer, indent_string: T.nilable(String), indent_empty_lines: T::Boolean).returns(T.nilable(String)) }
442
+ def indent!(amount, indent_string = nil, indent_empty_lines = false); end
443
+
444
+ sig { returns(ActiveSupport::StringInquirer) }
445
+ def inquiry; end
446
+
447
+ sig { returns(T::Boolean) }
448
+ def is_utf8?; end
449
+
450
+ sig { params(limit: Integer).returns(String) }
451
+ def last(limit = 1); end
452
+
453
+ sig { returns(ActiveSupport::Multibyte::Chars) }
454
+ def mb_chars; end
455
+
456
+ sig { params(separator: String, preserve_case: T::Boolean, locale: T.nilable(Symbol)).returns(String) }
457
+ def parameterize(separator: "-", preserve_case: false, locale: nil); end
458
+
459
+ sig { params(count: T.nilable(T.any(Integer, Symbol)), locale: T.nilable(Symbol)).returns(String) }
460
+ def pluralize(count = nil, locale = :en); end
461
+
462
+ sig { returns(T::Boolean) }
463
+ def present?; end
464
+
465
+ sig { params(patterns: T.any(String, Regexp)).returns(String) }
466
+ def remove(*patterns); end
467
+
468
+ sig { params(patterns: T.any(String, Regexp)).returns(String) }
469
+ def remove!(*patterns); end
470
+
471
+ sig { returns(T.untyped) }
472
+ def safe_constantize; end
473
+
474
+ sig { params(locale: Symbol).returns(String) }
475
+ def singularize(locale = :en); end
476
+
477
+ sig { returns(String) }
478
+ def squish; end
479
+
480
+ sig { returns(String) }
481
+ def squish!; end
482
+
483
+ # alias for `#start_with?`
484
+ sig { params(string_or_regexp: T.any(String, Regexp)).returns(T::Boolean) }
485
+ def starts_with?(*string_or_regexp); end
486
+
487
+ sig { returns(String) }
488
+ def strip_heredoc; end
489
+
490
+ sig { returns(String) }
491
+ def tableize; end
492
+
493
+ sig { params(keep_id_suffix: T::Boolean).returns(String) }
494
+ def titlecase(keep_id_suffix: false); end
495
+
496
+ sig { params(keep_id_suffix: T::Boolean).returns(String) }
497
+ def titleize(keep_id_suffix: false); end
498
+
499
+ sig { params(position: Integer).returns(String) }
500
+ def to(position); end
501
+
502
+ sig { returns(::Date) }
503
+ def to_date; end
504
+
505
+ sig { returns(::DateTime) }
506
+ def to_datetime; end
507
+
508
+ sig { params(form: T.nilable(Symbol)).returns(T.nilable(Time)) }
509
+ def to_time(form = :local); end
510
+
511
+ sig { params(truncate_to: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
512
+ def truncate(truncate_to, options = {}); end
513
+
514
+ sig { params(truncate_to: Integer, omission: T.nilable(String)).returns(String) }
515
+ def truncate_bytes(truncate_to, omission: "…"); end
516
+
517
+ sig { params(words_count: Integer, options: T::Hash[Symbol, T.anything]).returns(String) }
518
+ def truncate_words(words_count, options = {}); end
519
+
520
+ sig { returns(String) }
521
+ def underscore; end
522
+
523
+ sig { returns(String) }
524
+ def upcase_first; end
525
+ end
526
+
527
+ class ActiveSupport::ErrorReporter
528
+ # @version >= 7.1.0.beta1
529
+ sig { type_parameters(:Block, :Fallback).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), fallback: T.nilable(T.proc.returns(T.type_parameter(:Fallback))), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.any(T.type_parameter(:Block), T.type_parameter(:Fallback))) }
530
+ def handle(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), fallback: T.unsafe(nil), source: T.unsafe(nil), &blk); end
531
+
532
+ # @version >= 7.1.0.beta1
533
+ sig { type_parameters(:Block).params(error_classes: T.class_of(Exception), severity: T.nilable(Symbol), context: T.nilable(T::Hash[Symbol, T.untyped]), source: T.nilable(String), blk: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) }
534
+ def record(*error_classes, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil), &blk); end
535
+
536
+ # @version >= 7.1.0.beta1
537
+ sig { params(error: Exception, handled: T::Boolean, severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
538
+ def report(error, handled: true, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
539
+
540
+ # @version >= 7.2.0.beta1
541
+ sig { params(error: T.any(Exception, String), severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void }
542
+ def unexpected(error, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end
543
+ end
544
+
545
+ module ActiveSupport::Testing::Assertions
546
+ sig { type_parameters(:Block).params(block: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) }
547
+ def assert_nothing_raised(&block); end
548
+
549
+ sig { type_parameters(:TResult).params(expression: T.any(Proc, Kernel), message: Kernel, from: T.anything, to: T.anything, block: T.proc.returns(T.type_parameter(:TResult))).returns(T.type_parameter(:TResult)) }
550
+ def assert_changes(expression, message = T.unsafe(nil), from: T.unsafe(nil), to: T.unsafe(nil), &block); end
551
+ end
552
+
553
+ module ActiveSupport::Testing::ErrorReporterAssertions
554
+ # @version >= 7.1.0.rc1
555
+ sig { params(error_class: T.class_of(Exception), block: T.proc.void).returns(ActiveSupport::Testing::ErrorReporterAssertions::ErrorCollector::Report) }
556
+ def assert_error_reported(error_class = T.unsafe(nil), &block); end
557
+
558
+ # @version >= 8.1.0.beta1
559
+ sig { params(error_class: T.class_of(Exception), block: T.proc.void).returns(T::Array[ActiveSupport::Testing::ErrorReporterAssertions::ErrorCollector::Report]) }
560
+ def capture_error_reports(error_class = T.unsafe(nil), &block); end
561
+ end
@@ -0,0 +1,30 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This file was pulled from a central RBI files repository.
5
+ # Please run `bin/tapioca annotations` to update it.
6
+
7
+ class ActiveRecord::Base
8
+ # @shim: this is included at runtime https://github.com/rails/globalid/blob/v1.0.0/lib/global_id/railtie.rb#L38
9
+ include GlobalID::Identification
10
+ end
11
+
12
+ module GlobalID::Identification
13
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
14
+ def to_gid(options = {}); end
15
+
16
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
17
+ def to_gid_param(options = {}); end
18
+
19
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(GlobalID) }
20
+ def to_global_id(options = {}); end
21
+
22
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
23
+ def to_sgid(options = {}); end
24
+
25
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(String) }
26
+ def to_sgid_param(options = {}); end
27
+
28
+ sig { params(options: T::Hash[T.untyped, T.untyped]).returns(SignedGlobalID) }
29
+ def to_signed_global_id(options = {}); end
30
+ end
@@ -0,0 +1,116 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This file was pulled from a central RBI files repository.
5
+ # Please run `bin/tapioca annotations` to update it.
6
+
7
+ module Minitest::Assertions
8
+ sig { params(test: T.anything, msg: T.anything).returns(TrueClass) }
9
+ def assert(test, msg = nil); end
10
+
11
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
12
+ def assert_empty(obj, msg = nil); end
13
+
14
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
15
+ def assert_equal(exp, act, msg = nil); end
16
+
17
+ sig { params(exp: T.anything, act: T.anything, delta: Numeric, msg: T.anything).returns(TrueClass) }
18
+ def assert_in_delta(exp, act, delta = T.unsafe(nil), msg = nil); end
19
+
20
+ sig { params(a: T.anything, b: T.anything, epsilon: Numeric, msg: T.anything).returns(TrueClass) }
21
+ def assert_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = nil); end
22
+
23
+ sig { params(collection: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
24
+ def assert_includes(collection, obj, msg = nil); end
25
+
26
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
27
+ def assert_instance_of(cls, obj, msg = nil); end
28
+
29
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
30
+ def assert_kind_of(cls, obj, msg = nil); end
31
+
32
+ sig { params(matcher: T.any(String, Regexp), obj: T.anything, msg: T.anything).returns(MatchData) }
33
+ def assert_match(matcher, obj, msg = nil); end
34
+
35
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
36
+ def assert_nil(obj, msg = nil); end
37
+
38
+ sig { params(o1: T.anything, op: T.any(Symbol, String), o2: T.anything, msg: T.anything).returns(TrueClass) }
39
+ def assert_operator(o1, op, o2 = T.unsafe(nil), msg = nil); end
40
+
41
+ sig { params(stdout: T.nilable(T.any(String, Regexp)), stderr: T.nilable(T.any(String, Regexp)), block: T.proc.void).returns(T::Boolean) }
42
+ def assert_output(stdout = nil, stderr = nil, &block); end
43
+
44
+ sig { params(path: T.any(String, Pathname), msg: T.anything).returns(TrueClass) }
45
+ def assert_path_exists(path, msg = nil); end
46
+
47
+ sig { params(block: T.proc.void).returns(TrueClass) }
48
+ def assert_pattern(&block); end
49
+
50
+ sig { params(o1: T.anything, op: T.any(String, Symbol), msg: T.anything).returns(TrueClass) }
51
+ def assert_predicate(o1, op, msg = nil); end
52
+
53
+ sig { params(exp: NilClass, block: T.proc.void).returns(StandardError) }
54
+ sig { type_parameters(:T).params(exp: T.any(T::Class[T.type_parameter(:T)], Regexp, String), block: T.proc.void).returns(T.type_parameter(:T)) }
55
+ def assert_raises(*exp, &block); end
56
+
57
+ sig { params(obj: T.anything, meth: T.any(String, Symbol), msg: T.anything, include_all: T::Boolean).returns(TrueClass) }
58
+ def assert_respond_to(obj, meth, msg = nil, include_all: false); end
59
+
60
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
61
+ def assert_same(exp, act, msg = nil); end
62
+
63
+ sig { params(block: T.proc.void).returns(T::Boolean) }
64
+ def assert_silent(&block); end
65
+
66
+ sig { params(sym: Symbol, msg: T.anything, block: T.proc.void).returns(T.anything) }
67
+ def assert_throws(sym, msg = nil, &block); end
68
+
69
+ sig { params(test: T.anything, msg: T.anything).returns(TrueClass) }
70
+ def refute(test, msg = nil); end
71
+
72
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
73
+ def refute_empty(obj, msg = nil); end
74
+
75
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
76
+ def refute_equal(exp, act, msg = nil); end
77
+
78
+ sig { params(exp: T.anything, act: T.anything, delta: Numeric, msg: T.anything).returns(TrueClass) }
79
+ def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = nil); end
80
+
81
+ sig { params(a: T.anything, b: T.anything, epsilon: Numeric, msg: T.anything).returns(TrueClass) }
82
+ def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = nil); end
83
+
84
+ sig { params(collection: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
85
+ def refute_includes(collection, obj, msg = nil); end
86
+
87
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
88
+ def refute_instance_of(cls, obj, msg = nil); end
89
+
90
+ sig { params(cls: T.anything, obj: T.anything, msg: T.anything).returns(TrueClass) }
91
+ def refute_kind_of(cls, obj, msg = nil); end
92
+
93
+ sig { params(matcher: T.any(String, Regexp), obj: T.anything, msg: T.anything).returns(TrueClass) }
94
+ def refute_match(matcher, obj, msg = nil); end
95
+
96
+ sig { params(obj: T.anything, msg: T.anything).returns(TrueClass) }
97
+ def refute_nil(obj, msg = nil); end
98
+
99
+ sig { params(block: T.proc.void).returns(TrueClass) }
100
+ def refute_pattern(&block); end
101
+
102
+ sig { params(o1: T.anything, op: T.any(Symbol, String), o2: T.anything, msg: T.anything).returns(TrueClass) }
103
+ def refute_operator(o1, op, o2 = T.unsafe(nil), msg = nil); end
104
+
105
+ sig { params(path: T.any(String, Pathname), msg: T.anything).returns(TrueClass) }
106
+ def refute_path_exists(path, msg = nil); end
107
+
108
+ sig { params(o1: T.anything, op: T.any(String, Symbol), msg: T.anything).returns(TrueClass) }
109
+ def refute_predicate(o1, op, msg = nil); end
110
+
111
+ sig { params(obj: T.anything, meth: T.any(String, Symbol), msg: T.anything, include_all: T::Boolean).returns(TrueClass) }
112
+ def refute_respond_to(obj, meth, msg = nil, include_all: false); end
113
+
114
+ sig { params(exp: T.anything, act: T.anything, msg: T.anything).returns(TrueClass) }
115
+ def refute_same(exp, act, msg = nil); end
116
+ end