tapioca 0.11.17 → 0.13.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +122 -100
  3. data/lib/tapioca/commands/abstract_dsl.rb +3 -2
  4. data/lib/tapioca/commands/abstract_gem.rb +3 -1
  5. data/lib/tapioca/dsl/compilers/aasm.rb +1 -6
  6. data/lib/tapioca/dsl/compilers/action_controller_helpers.rb +1 -5
  7. data/lib/tapioca/dsl/compilers/action_mailer.rb +1 -5
  8. data/lib/tapioca/dsl/compilers/action_text.rb +1 -5
  9. data/lib/tapioca/dsl/compilers/active_job.rb +1 -5
  10. data/lib/tapioca/dsl/compilers/active_model_attributes.rb +4 -11
  11. data/lib/tapioca/dsl/compilers/active_model_secure_password.rb +10 -6
  12. data/lib/tapioca/dsl/compilers/active_model_validations_confirmation.rb +1 -5
  13. data/lib/tapioca/dsl/compilers/active_record_associations.rb +1 -5
  14. data/lib/tapioca/dsl/compilers/active_record_columns.rb +1 -5
  15. data/lib/tapioca/dsl/compilers/active_record_delegated_types.rb +1 -5
  16. data/lib/tapioca/dsl/compilers/active_record_enum.rb +1 -7
  17. data/lib/tapioca/dsl/compilers/active_record_fixtures.rb +2 -9
  18. data/lib/tapioca/dsl/compilers/active_record_relations.rb +253 -66
  19. data/lib/tapioca/dsl/compilers/active_record_scope.rb +1 -5
  20. data/lib/tapioca/dsl/compilers/active_record_secure_token.rb +1 -5
  21. data/lib/tapioca/dsl/compilers/active_record_store.rb +1 -5
  22. data/lib/tapioca/dsl/compilers/active_record_typed_store.rb +1 -7
  23. data/lib/tapioca/dsl/compilers/active_resource.rb +1 -5
  24. data/lib/tapioca/dsl/compilers/active_storage.rb +1 -6
  25. data/lib/tapioca/dsl/compilers/active_support_concern.rb +1 -5
  26. data/lib/tapioca/dsl/compilers/active_support_current_attributes.rb +6 -16
  27. data/lib/tapioca/dsl/compilers/config.rb +1 -5
  28. data/lib/tapioca/dsl/compilers/frozen_record.rb +1 -5
  29. data/lib/tapioca/dsl/compilers/graphql_input_object.rb +2 -6
  30. data/lib/tapioca/dsl/compilers/graphql_mutation.rb +2 -6
  31. data/lib/tapioca/dsl/compilers/identity_cache.rb +1 -7
  32. data/lib/tapioca/dsl/compilers/json_api_client_resource.rb +1 -7
  33. data/lib/tapioca/dsl/compilers/kredis.rb +1 -5
  34. data/lib/tapioca/dsl/compilers/mixed_in_class_attributes.rb +1 -5
  35. data/lib/tapioca/dsl/compilers/protobuf.rb +8 -5
  36. data/lib/tapioca/dsl/compilers/rails_generators.rb +1 -6
  37. data/lib/tapioca/dsl/compilers/sidekiq_worker.rb +1 -5
  38. data/lib/tapioca/dsl/compilers/smart_properties.rb +1 -7
  39. data/lib/tapioca/dsl/compilers/state_machines.rb +1 -7
  40. data/lib/tapioca/dsl/compilers/url_helpers.rb +17 -16
  41. data/lib/tapioca/dsl/extensions/active_record.rb +4 -2
  42. data/lib/tapioca/dsl/extensions/frozen_record.rb +6 -2
  43. data/lib/tapioca/dsl/extensions/kredis.rb +6 -2
  44. data/lib/tapioca/dsl/helpers/active_model_type_helper.rb +70 -0
  45. data/lib/tapioca/dsl/helpers/active_record_column_type_helper.rb +3 -35
  46. data/lib/tapioca/dsl/helpers/active_record_constants_helper.rb +2 -0
  47. data/lib/tapioca/dsl/pipeline.rb +1 -1
  48. data/lib/tapioca/gem/listeners/sorbet_props.rb +2 -1
  49. data/lib/tapioca/gemfile.rb +12 -1
  50. data/lib/tapioca/rbi_ext/model.rb +38 -6
  51. data/lib/tapioca/version.rb +1 -1
  52. metadata +6 -11
@@ -1,11 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "kredis"
6
- rescue LoadError
7
- return
8
- end
4
+ return unless defined?(Kredis::Attributes)
9
5
 
10
6
  module Tapioca
11
7
  module Dsl
@@ -1,11 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "active_support/core_ext/class/attribute"
6
- rescue LoadError
7
- return
8
- end
4
+ return unless defined?(ActiveSupport)
9
5
 
10
6
  module Tapioca
11
7
  module Dsl
@@ -1,11 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "google/protobuf"
6
- rescue LoadError
7
- return
8
- end
4
+ return unless defined?(Google::Protobuf)
9
5
 
10
6
  module Tapioca
11
7
  module Dsl
@@ -306,6 +302,13 @@ module Tapioca
306
302
  return_type: "void",
307
303
  )
308
304
 
305
+ if desc.has_presence?
306
+ klass.create_method(
307
+ "has_#{field.name}?",
308
+ return_type: "Object",
309
+ )
310
+ end
311
+
309
312
  field
310
313
  end
311
314
 
@@ -1,12 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "rails/generators"
6
- require "rails/generators/app_base"
7
- rescue LoadError
8
- return
9
- end
4
+ return unless defined?(Rails::Generators::Base)
10
5
 
11
6
  module Tapioca
12
7
  module Dsl
@@ -1,11 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "sidekiq"
6
- rescue LoadError
7
- return
8
- end
4
+ return unless defined?(Sidekiq::Worker)
9
5
 
10
6
  module Tapioca
11
7
  module Dsl
@@ -1,13 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "smart_properties"
6
- rescue LoadError
7
- # means SmartProperties is not installed,
8
- # so let's not even define the compiler.
9
- return
10
- end
4
+ return unless defined?(SmartProperties)
11
5
 
12
6
  module Tapioca
13
7
  module Dsl
@@ -1,13 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "state_machines"
6
- rescue LoadError
7
- # means StateMachines is not installed,
8
- # so let's not even define the compiler.
9
- return
10
- end
4
+ return unless defined?(StateMachines)
11
5
 
12
6
  module Tapioca
13
7
  module Dsl
@@ -1,13 +1,7 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
- begin
5
- require "rails"
6
- require "action_controller"
7
- require "action_view"
8
- rescue LoadError
9
- return
10
- end
4
+ return unless defined?(Rails) && defined?(ActionDispatch::Routing)
11
5
 
12
6
  module Tapioca
13
7
  module Dsl
@@ -102,19 +96,11 @@ module Tapioca
102
96
  end
103
97
  end
104
98
 
105
- NON_DISCOVERABLE_INCLUDERS = T.let(
106
- [
107
- ActionDispatch::IntegrationTest,
108
- ActionView::Helpers,
109
- ],
110
- T::Array[Module],
111
- )
112
-
113
99
  class << self
114
100
  extend T::Sig
115
101
  sig { override.returns(T::Enumerable[Module]) }
116
102
  def gather_constants
117
- return [] unless Rails.application
103
+ return [] unless defined?(Rails.application) && Rails.application
118
104
 
119
105
  Object.const_set(:GeneratedUrlHelpersModule, Rails.application.routes.named_routes.url_helpers_module)
120
106
  Object.const_set(:GeneratedPathHelpersModule, Rails.application.routes.named_routes.path_helpers_module)
@@ -131,6 +117,19 @@ module Tapioca
131
117
  constants.concat(NON_DISCOVERABLE_INCLUDERS)
132
118
  end
133
119
 
120
+ sig { returns(T::Array[Module]) }
121
+ def gather_non_discoverable_includers
122
+ [].tap do |includers|
123
+ if defined?(ActionController::TemplateAssertions) && defined?(ActionDispatch::IntegrationTest)
124
+ includers << ActionDispatch::IntegrationTest
125
+ end
126
+
127
+ if defined?(ActionView::Helpers)
128
+ includers << ActionView::Helpers
129
+ end
130
+ end.freeze
131
+ end
132
+
134
133
  sig { params(mod: Module, helper: Module).returns(T::Boolean) }
135
134
  private def includes_helper?(mod, helper)
136
135
  superclass_ancestors = []
@@ -145,6 +144,8 @@ module Tapioca
145
144
  end
146
145
  end
147
146
 
147
+ NON_DISCOVERABLE_INCLUDERS = T.let(gather_non_discoverable_includers, T::Array[Module])
148
+
148
149
  private
149
150
 
150
151
  sig { params(root: RBI::Tree, constant: Module).void }
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  begin
5
- require "active_record"
5
+ require "active_support"
6
6
  rescue LoadError
7
7
  return
8
8
  end
@@ -39,7 +39,9 @@ module Tapioca
39
39
  super
40
40
  end
41
41
 
42
- ::ActiveRecord::Base.singleton_class.prepend(self)
42
+ ::ActiveSupport.on_load(:active_record) do
43
+ ::ActiveRecord::Base.singleton_class.prepend(::Tapioca::Dsl::Compilers::Extensions::ActiveRecord)
44
+ end
43
45
  end
44
46
  end
45
47
  end
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  begin
5
- require "frozen_record"
5
+ require "active_support"
6
6
  rescue LoadError
7
7
  return
8
8
  end
@@ -21,7 +21,11 @@ module Tapioca
21
21
  super
22
22
  end
23
23
 
24
- ::FrozenRecord::Base.singleton_class.prepend(self)
24
+ ::ActiveSupport.on_load(:before_configuration) do
25
+ next unless defined?(::FrozenRecord::Base)
26
+
27
+ ::FrozenRecord::Base.singleton_class.prepend(::Tapioca::Dsl::Compilers::Extensions::FrozenRecord)
28
+ end
25
29
  end
26
30
  end
27
31
  end
@@ -2,7 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  begin
5
- require "kredis"
5
+ require "active_support"
6
6
  rescue LoadError
7
7
  return
8
8
  end
@@ -106,7 +106,11 @@ module Tapioca
106
106
  @__tapioca_kredis_types[method.to_s] = { type: type, values: values }
107
107
  end
108
108
 
109
- ::Kredis::Attributes::ClassMethods.prepend(self)
109
+ ::ActiveSupport.on_load(:before_configuration) do
110
+ next unless defined?(::Kredis::Attributes::ClassMethods)
111
+
112
+ ::Kredis::Attributes::ClassMethods.prepend(::Tapioca::Dsl::Compilers::Extensions::Kredis)
113
+ end
110
114
  end
111
115
  end
112
116
  end
@@ -0,0 +1,70 @@
1
+ # typed: strict
2
+ # frozen_string_literal: true
3
+
4
+ module Tapioca
5
+ module Dsl
6
+ module Helpers
7
+ module ActiveModelTypeHelper
8
+ class << self
9
+ extend T::Sig
10
+
11
+ # Returns the type indicated by the custom ActiveModel::Type::Value.
12
+ # Accepts subclasses of ActiveModel::Type::Value as well as classes that implement similar methods.
13
+ sig { params(type_value: T.untyped).returns(String) }
14
+ def type_for(type_value)
15
+ return "T.untyped" if Runtime::GenericTypeRegistry.generic_type_instance?(type_value)
16
+
17
+ type = lookup_return_type_of_method(type_value, :deserialize) ||
18
+ lookup_return_type_of_method(type_value, :cast) ||
19
+ lookup_return_type_of_method(type_value, :cast_value) ||
20
+ lookup_arg_type_of_method(type_value, :serialize) ||
21
+ T.untyped
22
+ type.to_s
23
+ end
24
+
25
+ private
26
+
27
+ MEANINGLESS_TYPES = T.let(
28
+ [
29
+ T.untyped,
30
+ T.noreturn,
31
+ T::Private::Types::Void,
32
+ T::Private::Types::NotTyped,
33
+ ].freeze,
34
+ T::Array[Object],
35
+ )
36
+
37
+ sig { params(type: T.untyped).returns(T::Boolean) }
38
+ def meaningful_type?(type)
39
+ !MEANINGLESS_TYPES.include?(type)
40
+ end
41
+
42
+ sig { params(obj: T.untyped, method: Symbol).returns(T.nilable(T::Types::Base)) }
43
+ def lookup_return_type_of_method(obj, method)
44
+ return_type = lookup_signature_of_method(obj, method)&.return_type
45
+ return unless return_type && meaningful_type?(return_type)
46
+
47
+ return_type
48
+ end
49
+
50
+ sig { params(obj: T.untyped, method: Symbol).returns(T.nilable(T::Types::Base)) }
51
+ def lookup_arg_type_of_method(obj, method)
52
+ # Arg types is an array of [name, type] entries, so we dig into first entry (index 0)
53
+ # and then into the type which is the last element (index 1)
54
+ first_arg_type = lookup_signature_of_method(obj, method)&.arg_types&.dig(0, 1)
55
+ return unless first_arg_type && meaningful_type?(first_arg_type)
56
+
57
+ first_arg_type
58
+ end
59
+
60
+ sig { params(obj: T.untyped, method: Symbol).returns(T.untyped) }
61
+ def lookup_signature_of_method(obj, method)
62
+ Runtime::Reflection.signature_of(obj.method(method))
63
+ rescue NameError
64
+ nil
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,6 +1,8 @@
1
1
  # typed: strict
2
2
  # frozen_string_literal: true
3
3
 
4
+ require "tapioca/dsl/helpers/active_model_type_helper"
5
+
4
6
  module Tapioca
5
7
  module Dsl
6
8
  module Helpers
@@ -98,7 +100,7 @@ module Tapioca
98
100
  ActiveRecord::ConnectionAdapters::PostgreSQL::OID::Array
99
101
  "T::Array[#{type_for_activerecord_value(column_type.subtype)}]"
100
102
  else
101
- handle_unknown_type(column_type)
103
+ ActiveModelTypeHelper.type_for(column_type)
102
104
  end
103
105
  end
104
106
 
@@ -108,40 +110,6 @@ module Tapioca
108
110
  !(constant.singleton_class < Object.const_get(:StrongTypeGeneration))
109
111
  end
110
112
 
111
- sig { params(column_type: BasicObject).returns(String) }
112
- def handle_unknown_type(column_type)
113
- return "T.untyped" unless ActiveModel::Type::Value === column_type
114
- return "T.untyped" if Runtime::GenericTypeRegistry.generic_type_instance?(column_type)
115
-
116
- lookup_return_type_of_method(column_type, :deserialize) ||
117
- lookup_return_type_of_method(column_type, :cast) ||
118
- lookup_arg_type_of_method(column_type, :serialize) ||
119
- "T.untyped"
120
- end
121
-
122
- sig { params(column_type: ActiveModel::Type::Value, method: Symbol).returns(T.nilable(String)) }
123
- def lookup_return_type_of_method(column_type, method)
124
- signature = Runtime::Reflection.signature_of(column_type.method(method))
125
- return unless signature
126
-
127
- return_type = signature.return_type
128
- return if return_type == T::Private::Types::Void || return_type == T::Private::Types::NotTyped
129
-
130
- return_type.to_s
131
- end
132
-
133
- sig { params(column_type: ActiveModel::Type::Value, method: Symbol).returns(T.nilable(String)) }
134
- def lookup_arg_type_of_method(column_type, method)
135
- signature = Runtime::Reflection.signature_of(column_type.method(method))
136
- return unless signature
137
-
138
- # Arg types is an array [name, type] entries, so we desctructure the type of
139
- # first argument to get the first argument type
140
- _, first_argument_type = signature.arg_types.first
141
-
142
- first_argument_type.to_s
143
- end
144
-
145
113
  sig { params(column_type: ActiveRecord::Enum::EnumType).returns(String) }
146
114
  def enum_setter_type(column_type)
147
115
  # In Rails < 7 this method is private. When support for that is dropped we can call the method directly
@@ -22,8 +22,10 @@ module Tapioca
22
22
  CommonRelationMethodsModuleName = T.let("CommonRelationMethods", String)
23
23
 
24
24
  RelationClassName = T.let("PrivateRelation", String)
25
+ RelationGroupChainClassName = T.let("PrivateRelationGroupChain", String)
25
26
  RelationWhereChainClassName = T.let("PrivateRelationWhereChain", String)
26
27
  AssociationRelationClassName = T.let("PrivateAssociationRelation", String)
28
+ AssociationRelationGroupChainClassName = T.let("PrivateAssociationRelationGroupChain", String)
27
29
  AssociationRelationWhereChainClassName = T.let("PrivateAssociationRelationWhereChain", String)
28
30
  AssociationsCollectionProxyClassName = T.let("PrivateCollectionProxy", String)
29
31
  end
@@ -61,7 +61,7 @@ module Tapioca
61
61
  .sort_by! { |c| T.must(Runtime::Reflection.name_of(c)) }
62
62
 
63
63
  # It's OK if there are no constants to process if we received a valid file/path.
64
- if constants_to_process.empty? && requested_paths.select { |p| File.exist?(p) }.empty?
64
+ if constants_to_process.empty? && requested_paths.none? { |p| File.exist?(p) }
65
65
  report_error(<<~ERROR)
66
66
  No classes/modules can be matched for RBI generation.
67
67
  Please check that the requested classes/modules include processable DSL methods.
@@ -6,6 +6,7 @@ module Tapioca
6
6
  module Listeners
7
7
  class SorbetProps < Base
8
8
  extend T::Sig
9
+ include RBIHelper
9
10
 
10
11
  private
11
12
 
@@ -17,7 +18,7 @@ module Tapioca
17
18
  return unless T::Props::ClassMethods === constant
18
19
 
19
20
  constant.props.map do |name, prop|
20
- type = prop.fetch(:type_object, "T.untyped").to_s.gsub(".returns(<VOID>)", ".void")
21
+ type = sanitize_signature_types(prop.fetch(:type_object, "T.untyped").to_s)
21
22
 
22
23
  default = prop.key?(:default) || prop.key?(:factory) ? "T.unsafe(nil)" : nil
23
24
  node << if prop.fetch(:immutable, false)
@@ -178,7 +178,18 @@ module Tapioca
178
178
 
179
179
  sig { void }
180
180
  def parse_yard_docs
181
- files.each { |path| YARD.parse(path.to_s, [], Logger::Severity::FATAL) }
181
+ files.each do |path|
182
+ YARD.parse(path.to_s, [], Logger::Severity::FATAL)
183
+ rescue RangeError
184
+ # In some circumstances, YARD will raise an error when parsing a file
185
+ # that is actually valid Ruby. We don't want tapioca to halt in these
186
+ # cases, so we'll rescue the error, pretend like there was no
187
+ # documentation, and move on.
188
+ #
189
+ # This can be removed when https://github.com/lsegal/yard/issues/1536
190
+ # is resolved and released.
191
+ []
192
+ end
182
193
  end
183
194
 
184
195
  sig { returns(T::Array[String]) }
@@ -87,24 +87,56 @@ module RBI
87
87
  ).void
88
88
  end
89
89
  def create_method(name, parameters: [], return_type: "T.untyped", class_method: false, visibility: RBI::Public.new,
90
+ comments: [])
91
+ sig = create_sig(parameters: parameters, return_type: return_type)
92
+ create_method_with_sigs(
93
+ name,
94
+ sigs: [sig],
95
+ parameters: parameters.map(&:param),
96
+ class_method: class_method,
97
+ visibility: visibility,
98
+ comments: comments,
99
+ )
100
+ end
101
+
102
+ sig do
103
+ params(
104
+ name: String,
105
+ sigs: T::Array[RBI::Sig],
106
+ parameters: T::Array[RBI::Param],
107
+ class_method: T::Boolean,
108
+ visibility: RBI::Visibility,
109
+ comments: T::Array[RBI::Comment],
110
+ ).void
111
+ end
112
+ def create_method_with_sigs(name, sigs:, parameters: [], class_method: false, visibility: RBI::Public.new,
90
113
  comments: [])
91
114
  return unless Tapioca::RBIHelper.valid_method_name?(name)
92
115
 
93
- sig = RBI::Sig.new(return_type: return_type)
94
116
  method = RBI::Method.new(
95
117
  name,
96
- sigs: [sig],
118
+ sigs: sigs,
119
+ params: parameters,
97
120
  is_singleton: class_method,
98
121
  visibility: visibility,
99
122
  comments: comments,
100
123
  )
101
- parameters.each do |param|
102
- method << param.param
103
- sig << RBI::SigParam.new(param.param.name, param.type)
104
- end
105
124
  self << method
106
125
  end
107
126
 
127
+ sig do
128
+ params(
129
+ parameters: T::Array[RBI::TypedParam],
130
+ return_type: String,
131
+ ).returns(RBI::Sig)
132
+ end
133
+ def create_sig(parameters: [], return_type: "T.untyped")
134
+ params = parameters.map do |param|
135
+ RBI::SigParam.new(param.param.name, param.type)
136
+ end
137
+ RBI::Sig.new(params: params, return_type: return_type)
138
+ end
139
+
108
140
  private
109
141
 
110
142
  sig { returns(T::Hash[String, RBI::Node]) }
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Tapioca
5
- VERSION = "0.11.17"
5
+ VERSION = "0.13.0"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.17
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ufuk Kayserilioglu
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2024-01-15 00:00:00.000000000 Z
14
+ date: 2024-03-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -81,21 +81,18 @@ dependencies:
81
81
  requirements:
82
82
  - - ">="
83
83
  - !ruby/object:Gem::Version
84
- version: 0.5.10820
84
+ version: 0.5.11087
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 0.5.10820
91
+ version: 0.5.11087
92
92
  - !ruby/object:Gem::Dependency
93
93
  name: spoom
94
94
  requirement: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - "~>"
97
- - !ruby/object:Gem::Version
98
- version: 1.2.0
99
96
  - - ">="
100
97
  - !ruby/object:Gem::Version
101
98
  version: 1.2.0
@@ -103,9 +100,6 @@ dependencies:
103
100
  prerelease: false
104
101
  version_requirements: !ruby/object:Gem::Requirement
105
102
  requirements:
106
- - - "~>"
107
- - !ruby/object:Gem::Version
108
- version: 1.2.0
109
103
  - - ">="
110
104
  - !ruby/object:Gem::Version
111
105
  version: 1.2.0
@@ -209,6 +203,7 @@ files:
209
203
  - lib/tapioca/dsl/extensions/active_record.rb
210
204
  - lib/tapioca/dsl/extensions/frozen_record.rb
211
205
  - lib/tapioca/dsl/extensions/kredis.rb
206
+ - lib/tapioca/dsl/helpers/active_model_type_helper.rb
212
207
  - lib/tapioca/dsl/helpers/active_record_column_type_helper.rb
213
208
  - lib/tapioca/dsl/helpers/active_record_constants_helper.rb
214
209
  - lib/tapioca/dsl/helpers/graphql_type_helper.rb
@@ -293,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
293
288
  - !ruby/object:Gem::Version
294
289
  version: '0'
295
290
  requirements: []
296
- rubygems_version: 3.5.4
291
+ rubygems_version: 3.5.6
297
292
  signing_key:
298
293
  specification_version: 4
299
294
  summary: A Ruby Interface file generator for gems, core types and the Ruby standard