rbs_activerecord 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 (56) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +22 -0
  3. data/.vscode/extensions.json +6 -0
  4. data/.vscode/settings.json +12 -0
  5. data/CODE_OF_CONDUCT.md +132 -0
  6. data/LICENSE.txt +21 -0
  7. data/README.md +49 -0
  8. data/Rakefile +14 -0
  9. data/Steepfile +9 -0
  10. data/lib/generators/rbs_activerecord/install_generator.rb +21 -0
  11. data/lib/rbs_activerecord/generator/active_storage/instance_methods.rb +57 -0
  12. data/lib/rbs_activerecord/generator/active_storage/scopes.rb +39 -0
  13. data/lib/rbs_activerecord/generator/associations.rb +118 -0
  14. data/lib/rbs_activerecord/generator/attributes.rb +95 -0
  15. data/lib/rbs_activerecord/generator/delegated_type/instance_methods.rb +66 -0
  16. data/lib/rbs_activerecord/generator/delegated_type/scopes.rb +44 -0
  17. data/lib/rbs_activerecord/generator/enum/base.rb +63 -0
  18. data/lib/rbs_activerecord/generator/enum/instance_methods.rb +51 -0
  19. data/lib/rbs_activerecord/generator/enum/scopes.rb +51 -0
  20. data/lib/rbs_activerecord/generator/pluck_overloads.rb +41 -0
  21. data/lib/rbs_activerecord/generator/scopes.rb +99 -0
  22. data/lib/rbs_activerecord/generator/secure_password.rb +54 -0
  23. data/lib/rbs_activerecord/generator.rb +143 -0
  24. data/lib/rbs_activerecord/model.rb +33 -0
  25. data/lib/rbs_activerecord/parser/evaluator.rb +48 -0
  26. data/lib/rbs_activerecord/parser/visitor.rb +67 -0
  27. data/lib/rbs_activerecord/parser.rb +30 -0
  28. data/lib/rbs_activerecord/rake_task.rb +61 -0
  29. data/lib/rbs_activerecord/utils.rb +58 -0
  30. data/lib/rbs_activerecord/version.rb +5 -0
  31. data/lib/rbs_activerecord.rb +27 -0
  32. data/rbs_collection.lock.yaml +352 -0
  33. data/rbs_collection.yaml +18 -0
  34. data/sig/generators/rbs_activerecord/install_generator.rbs +7 -0
  35. data/sig/rbs_activerecord/generator/active_storage/instance_methods.rbs +23 -0
  36. data/sig/rbs_activerecord/generator/active_storage/scopes.rbs +23 -0
  37. data/sig/rbs_activerecord/generator/associations.rbs +29 -0
  38. data/sig/rbs_activerecord/generator/attributes.rbs +28 -0
  39. data/sig/rbs_activerecord/generator/delegated_type/instance_methods.rbs +31 -0
  40. data/sig/rbs_activerecord/generator/delegated_type/scopes.rbs +26 -0
  41. data/sig/rbs_activerecord/generator/enum/base.rbs +19 -0
  42. data/sig/rbs_activerecord/generator/enum/instance_methods.rbs +26 -0
  43. data/sig/rbs_activerecord/generator/enum/scopes.rbs +26 -0
  44. data/sig/rbs_activerecord/generator/pluck_overloads.rbs +23 -0
  45. data/sig/rbs_activerecord/generator/scopes.rbs +27 -0
  46. data/sig/rbs_activerecord/generator/secure_password.rbs +22 -0
  47. data/sig/rbs_activerecord/generator.rbs +34 -0
  48. data/sig/rbs_activerecord/model.rbs +26 -0
  49. data/sig/rbs_activerecord/parser/evaluator.rbs +12 -0
  50. data/sig/rbs_activerecord/parser/visitor.rbs +27 -0
  51. data/sig/rbs_activerecord/parser.rbs +15 -0
  52. data/sig/rbs_activerecord/rake_task.rbs +19 -0
  53. data/sig/rbs_activerecord/utils.rbs +14 -0
  54. data/sig/rbs_activerecord/version.rbs +5 -0
  55. data/sig/rbs_activerecord.rbs +6 -0
  56. metadata +142 -0
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "prism"
4
+
5
+ module RbsActiverecord
6
+ module Parser
7
+ # NOTE: rbs-inline-0.9.0 does not support module_function yet.
8
+ # refs: https://github.com/soutaro/rbs-inline/pull/118
9
+ #
10
+ # @rbs!
11
+ # def self.parse: (String filename) -> Hash[String, Array[Prism::CallNode]]
12
+ # def self.eval_node: (Prism::Node node) -> untyped
13
+
14
+ # @rbs filename: String
15
+ def parse(filename) #: Hash[String, Array[Prism::CallNode]]
16
+ result = Prism.parse_file(filename)
17
+
18
+ visitor = Visitor.new
19
+ visitor.visit(result.value)
20
+ visitor.decls
21
+ end
22
+ module_function :parse
23
+
24
+ # @rbs node: Prism::Node
25
+ def eval_node(node) #: untyped
26
+ Evaluator.eval_node(node)
27
+ end
28
+ module_function :eval_node
29
+ end
30
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rake/tasklib"
4
+
5
+ module RbsActiverecord
6
+ class RakeTask < Rake::TaskLib
7
+ attr_accessor :name, :signature_root_dir
8
+
9
+ # @rbs name: Symbol
10
+ # @rbs &block: (RakeTask) -> void
11
+ def initialize(name = :'rbs:activerecord', &block) #: void
12
+ super()
13
+
14
+ @name = name
15
+ @signature_root_dir = Rails.root / "sig/activerecord"
16
+
17
+ block&.call(self)
18
+
19
+ define_setup_task
20
+ define_clean_task
21
+ define_generate_task
22
+ end
23
+
24
+ def define_setup_task #: void
25
+ desc "Run all tasks of rbs_activerecord"
26
+
27
+ deps = [:"#{name}:clean", :"#{name}:generate"]
28
+ task("#{name}:setup" => deps)
29
+ end
30
+
31
+ def define_clean_task #: void
32
+ desc "Clean RBS files for ActiveRecord models"
33
+ task "#{name}:clean" do
34
+ signature_root_dir.rmtree if signature_root_dir.exist?
35
+ end
36
+ end
37
+
38
+ def define_generate_task #: void # rubocop:disable Metrics/AbcSize
39
+ desc "Generate RBS files for ActiveRecord models"
40
+ task("#{name}:generate": :environment) do
41
+ require "rbs_activerecord" # load RbsActiverecord lazily
42
+
43
+ Rails.application.eager_load!
44
+
45
+ signature_root_dir.mkpath
46
+
47
+ ActiveRecord::Base.descendants.each do |klass|
48
+ next if klass.abstract_class?
49
+ next unless klass.connection.table_exists?(klass.table_name)
50
+
51
+ rbs = Generator.new(klass).generate
52
+ next unless rbs
53
+
54
+ path = signature_root_dir / "app/models/#{klass.name.underscore}.rbs"
55
+ path.dirname.mkpath
56
+ path.write(rbs)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "rbs"
4
+
5
+ module RbsActiverecord
6
+ module Utils
7
+ # @rbs str: String
8
+ def format(str) #: String
9
+ parsed = RBS::Parser.parse_signature(str)
10
+ StringIO.new.tap do |out|
11
+ RBS::Writer.new(out: out).write(parsed[1] + parsed[2])
12
+ end.string
13
+ end
14
+
15
+ # @rbs klass: singleton(ActiveRecord::Base)
16
+ def primary_key_type_for(klass) #: String # rubocop:disable Metrics/AbcSize
17
+ case klass.primary_key
18
+ when Array
19
+ primary_keys = klass.primary_key.map(&:to_s)
20
+ types = klass.columns
21
+ .select { |column| primary_keys.include?(column.name) }
22
+ .map { |pk| sql_type_to_class(pk.type) }
23
+ "[#{types.join(" | ")}]"
24
+ else
25
+ primary_key = klass.columns.find { |column| column.name == klass.primary_key }
26
+ sql_type_to_class(primary_key.type)
27
+ end
28
+ end
29
+
30
+ # @rbs type: Symbol
31
+ def sql_type_to_class(type) #: String # rubocop:disable Metris/CyclomaticComplexity
32
+ case type
33
+ when :integer
34
+ "::Integer"
35
+ when :float
36
+ "::Float"
37
+ when :decimal
38
+ "::BigDecimal"
39
+ when :string, :text, :citext, :uuid, :binary
40
+ "::String"
41
+ when :datetime
42
+ "::ActiveSupport::TimeWithZone"
43
+ when :date
44
+ "::Date"
45
+ when :time
46
+ "::Time"
47
+ when :boolean
48
+ "bool"
49
+ when :jsonb, :json
50
+ "untyped"
51
+ when :inet
52
+ "::IPAddr"
53
+ else
54
+ "untyped"
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RbsActiverecord
4
+ VERSION = "1.0.0"
5
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "rbs_activerecord/utils"
4
+
5
+ require_relative "rbs_activerecord/generator"
6
+ require_relative "rbs_activerecord/generator/active_storage/instance_methods"
7
+ require_relative "rbs_activerecord/generator/active_storage/scopes"
8
+ require_relative "rbs_activerecord/generator/associations"
9
+ require_relative "rbs_activerecord/generator/attributes"
10
+ require_relative "rbs_activerecord/generator/delegated_type/instance_methods"
11
+ require_relative "rbs_activerecord/generator/delegated_type/scopes"
12
+ require_relative "rbs_activerecord/generator/enum/base"
13
+ require_relative "rbs_activerecord/generator/enum/instance_methods"
14
+ require_relative "rbs_activerecord/generator/enum/scopes"
15
+ require_relative "rbs_activerecord/generator/pluck_overloads"
16
+ require_relative "rbs_activerecord/generator/scopes"
17
+ require_relative "rbs_activerecord/generator/secure_password"
18
+ require_relative "rbs_activerecord/model"
19
+ require_relative "rbs_activerecord/parser"
20
+ require_relative "rbs_activerecord/parser/evaluator"
21
+ require_relative "rbs_activerecord/parser/visitor"
22
+ require_relative "rbs_activerecord/version"
23
+
24
+ module RbsActiverecord
25
+ class Error < StandardError; end
26
+ # Your code goes here...
27
+ end
@@ -0,0 +1,352 @@
1
+ ---
2
+ path: ".gem_rbs_collection"
3
+ gems:
4
+ - name: actionpack
5
+ version: '7.2'
6
+ source:
7
+ type: git
8
+ name: ruby/gem_rbs_collection
9
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
10
+ remote: https://github.com/ruby/gem_rbs_collection.git
11
+ repo_dir: gems
12
+ - name: actionview
13
+ version: '6.0'
14
+ source:
15
+ type: git
16
+ name: ruby/gem_rbs_collection
17
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
18
+ remote: https://github.com/ruby/gem_rbs_collection.git
19
+ repo_dir: gems
20
+ - name: activejob
21
+ version: '6.0'
22
+ source:
23
+ type: git
24
+ name: ruby/gem_rbs_collection
25
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
26
+ remote: https://github.com/ruby/gem_rbs_collection.git
27
+ repo_dir: gems
28
+ - name: activemodel
29
+ version: '7.0'
30
+ source:
31
+ type: git
32
+ name: ruby/gem_rbs_collection
33
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
34
+ remote: https://github.com/ruby/gem_rbs_collection.git
35
+ repo_dir: gems
36
+ - name: activerecord
37
+ version: '7.2'
38
+ source:
39
+ type: git
40
+ name: ruby/gem_rbs_collection
41
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
42
+ remote: https://github.com/ruby/gem_rbs_collection.git
43
+ repo_dir: gems
44
+ - name: activestorage
45
+ version: '7.0'
46
+ source:
47
+ type: git
48
+ name: ruby/gem_rbs_collection
49
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
50
+ remote: https://github.com/ruby/gem_rbs_collection.git
51
+ repo_dir: gems
52
+ - name: activesupport
53
+ version: '7.0'
54
+ source:
55
+ type: git
56
+ name: ruby/gem_rbs_collection
57
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
58
+ remote: https://github.com/ruby/gem_rbs_collection.git
59
+ repo_dir: gems
60
+ - name: ast
61
+ version: '2.4'
62
+ source:
63
+ type: git
64
+ name: ruby/gem_rbs_collection
65
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
66
+ remote: https://github.com/ruby/gem_rbs_collection.git
67
+ repo_dir: gems
68
+ - name: base64
69
+ version: '0'
70
+ source:
71
+ type: stdlib
72
+ - name: bcrypt
73
+ version: '3.1'
74
+ source:
75
+ type: git
76
+ name: ruby/gem_rbs_collection
77
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
78
+ remote: https://github.com/ruby/gem_rbs_collection.git
79
+ repo_dir: gems
80
+ - name: benchmark
81
+ version: '0'
82
+ source:
83
+ type: stdlib
84
+ - name: bigdecimal
85
+ version: '0'
86
+ source:
87
+ type: stdlib
88
+ - name: cgi
89
+ version: '0'
90
+ source:
91
+ type: stdlib
92
+ - name: concurrent-ruby
93
+ version: '1.1'
94
+ source:
95
+ type: git
96
+ name: ruby/gem_rbs_collection
97
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
98
+ remote: https://github.com/ruby/gem_rbs_collection.git
99
+ repo_dir: gems
100
+ - name: connection_pool
101
+ version: '2.4'
102
+ source:
103
+ type: git
104
+ name: ruby/gem_rbs_collection
105
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
106
+ remote: https://github.com/ruby/gem_rbs_collection.git
107
+ repo_dir: gems
108
+ - name: date
109
+ version: '0'
110
+ source:
111
+ type: stdlib
112
+ - name: delegate
113
+ version: '0'
114
+ source:
115
+ type: stdlib
116
+ - name: erb
117
+ version: '0'
118
+ source:
119
+ type: stdlib
120
+ - name: fileutils
121
+ version: '0'
122
+ source:
123
+ type: stdlib
124
+ - name: forwardable
125
+ version: '0'
126
+ source:
127
+ type: stdlib
128
+ - name: globalid
129
+ version: '1.1'
130
+ source:
131
+ type: git
132
+ name: ruby/gem_rbs_collection
133
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
134
+ remote: https://github.com/ruby/gem_rbs_collection.git
135
+ repo_dir: gems
136
+ - name: i18n
137
+ version: '1.10'
138
+ source:
139
+ type: git
140
+ name: ruby/gem_rbs_collection
141
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
142
+ remote: https://github.com/ruby/gem_rbs_collection.git
143
+ repo_dir: gems
144
+ - name: io-console
145
+ version: '0'
146
+ source:
147
+ type: stdlib
148
+ - name: json
149
+ version: '0'
150
+ source:
151
+ type: stdlib
152
+ - name: logger
153
+ version: '0'
154
+ source:
155
+ type: stdlib
156
+ - name: marcel
157
+ version: '1.0'
158
+ source:
159
+ type: git
160
+ name: ruby/gem_rbs_collection
161
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
162
+ remote: https://github.com/ruby/gem_rbs_collection.git
163
+ repo_dir: gems
164
+ - name: minitest
165
+ version: '0'
166
+ source:
167
+ type: stdlib
168
+ - name: monitor
169
+ version: '0'
170
+ source:
171
+ type: stdlib
172
+ - name: mutex_m
173
+ version: '0'
174
+ source:
175
+ type: stdlib
176
+ - name: nokogiri
177
+ version: '1.11'
178
+ source:
179
+ type: git
180
+ name: ruby/gem_rbs_collection
181
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
182
+ remote: https://github.com/ruby/gem_rbs_collection.git
183
+ repo_dir: gems
184
+ - name: openssl
185
+ version: '0'
186
+ source:
187
+ type: stdlib
188
+ - name: optparse
189
+ version: '0'
190
+ source:
191
+ type: stdlib
192
+ - name: parallel
193
+ version: '1.20'
194
+ source:
195
+ type: git
196
+ name: ruby/gem_rbs_collection
197
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
198
+ remote: https://github.com/ruby/gem_rbs_collection.git
199
+ repo_dir: gems
200
+ - name: parser
201
+ version: '3.2'
202
+ source:
203
+ type: git
204
+ name: ruby/gem_rbs_collection
205
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
206
+ remote: https://github.com/ruby/gem_rbs_collection.git
207
+ repo_dir: gems
208
+ - name: pathname
209
+ version: '0'
210
+ source:
211
+ type: stdlib
212
+ - name: prism
213
+ version: 1.0.0
214
+ source:
215
+ type: rubygems
216
+ - name: rack
217
+ version: '2.2'
218
+ source:
219
+ type: git
220
+ name: ruby/gem_rbs_collection
221
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
222
+ remote: https://github.com/ruby/gem_rbs_collection.git
223
+ repo_dir: gems
224
+ - name: rails-dom-testing
225
+ version: '2.0'
226
+ source:
227
+ type: git
228
+ name: ruby/gem_rbs_collection
229
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
230
+ remote: https://github.com/ruby/gem_rbs_collection.git
231
+ repo_dir: gems
232
+ - name: rails-html-sanitizer
233
+ version: '1.6'
234
+ source:
235
+ type: git
236
+ name: ruby/gem_rbs_collection
237
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
238
+ remote: https://github.com/ruby/gem_rbs_collection.git
239
+ repo_dir: gems
240
+ - name: railties
241
+ version: '6.0'
242
+ source:
243
+ type: git
244
+ name: ruby/gem_rbs_collection
245
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
246
+ remote: https://github.com/ruby/gem_rbs_collection.git
247
+ repo_dir: gems
248
+ - name: rainbow
249
+ version: '3.0'
250
+ source:
251
+ type: git
252
+ name: ruby/gem_rbs_collection
253
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
254
+ remote: https://github.com/ruby/gem_rbs_collection.git
255
+ repo_dir: gems
256
+ - name: rake
257
+ version: '13.0'
258
+ source:
259
+ type: git
260
+ name: ruby/gem_rbs_collection
261
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
262
+ remote: https://github.com/ruby/gem_rbs_collection.git
263
+ repo_dir: gems
264
+ - name: rbs
265
+ version: 3.6.1
266
+ source:
267
+ type: rubygems
268
+ - name: rdoc
269
+ version: '0'
270
+ source:
271
+ type: stdlib
272
+ - name: regexp_parser
273
+ version: '2.8'
274
+ source:
275
+ type: git
276
+ name: ruby/gem_rbs_collection
277
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
278
+ remote: https://github.com/ruby/gem_rbs_collection.git
279
+ repo_dir: gems
280
+ - name: rubocop
281
+ version: '1.57'
282
+ source:
283
+ type: git
284
+ name: ruby/gem_rbs_collection
285
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
286
+ remote: https://github.com/ruby/gem_rbs_collection.git
287
+ repo_dir: gems
288
+ - name: rubocop-ast
289
+ version: '1.30'
290
+ source:
291
+ type: git
292
+ name: ruby/gem_rbs_collection
293
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
294
+ remote: https://github.com/ruby/gem_rbs_collection.git
295
+ repo_dir: gems
296
+ - name: securerandom
297
+ version: '0'
298
+ source:
299
+ type: stdlib
300
+ - name: singleton
301
+ version: '0'
302
+ source:
303
+ type: stdlib
304
+ - name: socket
305
+ version: '0'
306
+ source:
307
+ type: stdlib
308
+ - name: sqlite3
309
+ version: '2.0'
310
+ source:
311
+ type: git
312
+ name: ruby/gem_rbs_collection
313
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
314
+ remote: https://github.com/ruby/gem_rbs_collection.git
315
+ repo_dir: gems
316
+ - name: tempfile
317
+ version: '0'
318
+ source:
319
+ type: stdlib
320
+ - name: thor
321
+ version: '1.2'
322
+ source:
323
+ type: git
324
+ name: ruby/gem_rbs_collection
325
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
326
+ remote: https://github.com/ruby/gem_rbs_collection.git
327
+ repo_dir: gems
328
+ - name: time
329
+ version: '0'
330
+ source:
331
+ type: stdlib
332
+ - name: timeout
333
+ version: '0'
334
+ source:
335
+ type: stdlib
336
+ - name: tsort
337
+ version: '0'
338
+ source:
339
+ type: stdlib
340
+ - name: tzinfo
341
+ version: '2.0'
342
+ source:
343
+ type: git
344
+ name: ruby/gem_rbs_collection
345
+ revision: 9b07b7bde4c9f656f3f6d785bd676320032cecb4
346
+ remote: https://github.com/ruby/gem_rbs_collection.git
347
+ repo_dir: gems
348
+ - name: uri
349
+ version: '0'
350
+ source:
351
+ type: stdlib
352
+ gemfile_lock_path: Gemfile.lock
@@ -0,0 +1,18 @@
1
+ # Download sources
2
+ sources:
3
+ - type: git
4
+ name: ruby/gem_rbs_collection
5
+ remote: https://github.com/ruby/gem_rbs_collection.git
6
+ revision: main
7
+ repo_dir: gems
8
+
9
+ # You can specify local directories as sources also.
10
+ # - type: local
11
+ # path: path/to/your/local/repository
12
+
13
+ # A directory to install the downloaded RBSs
14
+ path: .gem_rbs_collection
15
+
16
+ gems:
17
+ - name: forwardable
18
+ - name: rbs
@@ -0,0 +1,7 @@
1
+ # Generated from lib/generators/rbs_activerecord/install_generator.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class InstallGenerator < Rails::Generators::Base
5
+ def create_raketask: () -> untyped
6
+ end
7
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/rbs_activerecord/generator/active_storage/instance_methods.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class Generator
5
+ module ActiveStorage
6
+ class InstanceMethods
7
+ attr_reader model: RbsActiverecord::Model
8
+
9
+ # @rbs model: RbsActiverecord::Model
10
+ def initialize: (RbsActiverecord::Model model) -> void
11
+
12
+ def generate: () -> String
13
+
14
+ private
15
+
16
+ def attachments: () -> Hash[String, untyped]
17
+
18
+ # @rbs name: String
19
+ def attachment: (String name, untyped reflection) -> String
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # Generated from lib/rbs_activerecord/generator/active_storage/scopes.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class Generator
5
+ module ActiveStorage
6
+ class Scopes
7
+ attr_reader model: RbsActiverecord::Model
8
+
9
+ # @rbs model: RbsActiverecord::Model
10
+ def initialize: (RbsActiverecord::Model model) -> void
11
+
12
+ def generate: () -> String
13
+
14
+ private
15
+
16
+ def attachments: () -> Hash[String, untyped]
17
+
18
+ # @rbs name: String
19
+ def attachment: (String name) -> String
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ # Generated from lib/rbs_activerecord/generator/associations.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class Generator
5
+ class Associations
6
+ include Utils
7
+
8
+ attr_reader model: RbsActiverecord::Model
9
+
10
+ # @rbs model: RbsActiverecord::Model
11
+ def initialize: (RbsActiverecord::Model model) -> void
12
+
13
+ def generate: () -> String
14
+
15
+ private
16
+
17
+ def has_many: () -> String
18
+
19
+ def has_one: () -> String
20
+
21
+ def belongs_to: () -> String
22
+
23
+ # @rbs assoc: untyped
24
+ def polymorphic_owner_types: (untyped assoc) -> String
25
+
26
+ def has_and_belongs_to_many: () -> String
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,28 @@
1
+ # Generated from lib/rbs_activerecord/generator/attributes.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class Generator
5
+ class Attributes
6
+ include Utils
7
+
8
+ attr_reader model: RbsActiverecord::Model
9
+
10
+ # @rbs model: RbsActiverecord::Model
11
+ def initialize: (RbsActiverecord::Model model) -> void
12
+
13
+ def generate: () -> String
14
+
15
+ private
16
+
17
+ def column: (untyped col) -> String
18
+
19
+ def attributes: () -> Hash[String, untyped]
20
+
21
+ # @rbs name: String
22
+ # @rbs type: untyped
23
+ def attribute: (String name, untyped type) -> String
24
+
25
+ def alias_method: (untyped from, untyped to) -> String
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,31 @@
1
+ # Generated from lib/rbs_activerecord/generator/delegated_type/instance_methods.rb with RBS::Inline
2
+
3
+ module RbsActiverecord
4
+ class Generator
5
+ module DelegatedType
6
+ class InstanceMethods
7
+ include Utils
8
+
9
+ attr_reader model: RbsActiverecord::Model
10
+
11
+ attr_reader declarations: Array[Prism::CallNode]
12
+
13
+ # @rbs model: RbsActiverecord::Model
14
+ # @rbs declarations: Hash[String, Array[Prism::CallNode]]
15
+ def initialize: (RbsActiverecord::Model model, Hash[String, Array[Prism::CallNode]] declarations) -> void
16
+
17
+ def generate: () -> String
18
+
19
+ private
20
+
21
+ def delegated_types: () -> Array[Prism::CallNode]
22
+
23
+ # @rbs node: Prism::CallNode
24
+ def delegated_type: (Prism::CallNode node) -> String
25
+
26
+ # @rbs klass_name: String
27
+ def primary_key_type_for: (String klass_name) -> String
28
+ end
29
+ end
30
+ end
31
+ end