tapioca 0.11.17 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +122 -100
- data/lib/tapioca/commands/abstract_dsl.rb +3 -2
- data/lib/tapioca/commands/abstract_gem.rb +3 -1
- data/lib/tapioca/dsl/compilers/aasm.rb +1 -6
- data/lib/tapioca/dsl/compilers/action_controller_helpers.rb +1 -5
- data/lib/tapioca/dsl/compilers/action_mailer.rb +1 -5
- data/lib/tapioca/dsl/compilers/action_text.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_job.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_model_attributes.rb +4 -11
- data/lib/tapioca/dsl/compilers/active_model_secure_password.rb +10 -6
- data/lib/tapioca/dsl/compilers/active_model_validations_confirmation.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_associations.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_columns.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_delegated_types.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_enum.rb +1 -7
- data/lib/tapioca/dsl/compilers/active_record_fixtures.rb +2 -9
- data/lib/tapioca/dsl/compilers/active_record_relations.rb +253 -66
- data/lib/tapioca/dsl/compilers/active_record_scope.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_secure_token.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_store.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_record_typed_store.rb +1 -7
- data/lib/tapioca/dsl/compilers/active_resource.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_storage.rb +1 -6
- data/lib/tapioca/dsl/compilers/active_support_concern.rb +1 -5
- data/lib/tapioca/dsl/compilers/active_support_current_attributes.rb +6 -16
- data/lib/tapioca/dsl/compilers/config.rb +1 -5
- data/lib/tapioca/dsl/compilers/frozen_record.rb +1 -5
- data/lib/tapioca/dsl/compilers/graphql_input_object.rb +2 -6
- data/lib/tapioca/dsl/compilers/graphql_mutation.rb +2 -6
- data/lib/tapioca/dsl/compilers/identity_cache.rb +1 -7
- data/lib/tapioca/dsl/compilers/json_api_client_resource.rb +1 -7
- data/lib/tapioca/dsl/compilers/kredis.rb +1 -5
- data/lib/tapioca/dsl/compilers/mixed_in_class_attributes.rb +1 -5
- data/lib/tapioca/dsl/compilers/protobuf.rb +8 -5
- data/lib/tapioca/dsl/compilers/rails_generators.rb +1 -6
- data/lib/tapioca/dsl/compilers/sidekiq_worker.rb +1 -5
- data/lib/tapioca/dsl/compilers/smart_properties.rb +1 -7
- data/lib/tapioca/dsl/compilers/state_machines.rb +1 -7
- data/lib/tapioca/dsl/compilers/url_helpers.rb +17 -16
- data/lib/tapioca/dsl/extensions/active_record.rb +4 -2
- data/lib/tapioca/dsl/extensions/frozen_record.rb +6 -2
- data/lib/tapioca/dsl/extensions/kredis.rb +6 -2
- data/lib/tapioca/dsl/helpers/active_model_type_helper.rb +70 -0
- data/lib/tapioca/dsl/helpers/active_record_column_type_helper.rb +3 -35
- data/lib/tapioca/dsl/helpers/active_record_constants_helper.rb +2 -0
- data/lib/tapioca/dsl/pipeline.rb +1 -1
- data/lib/tapioca/gem/listeners/sorbet_props.rb +2 -1
- data/lib/tapioca/gemfile.rb +12 -1
- data/lib/tapioca/rbi_ext/model.rb +38 -6
- data/lib/tapioca/version.rb +1 -1
- metadata +6 -11
@@ -1,11 +1,7 @@
|
|
1
1
|
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
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,13 +1,7 @@
|
|
1
1
|
# typed: strict
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
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
|
-
|
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
|
-
|
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 "
|
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
|
-
::
|
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 "
|
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
|
-
::
|
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 "
|
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
|
-
::
|
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
|
-
|
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
|
data/lib/tapioca/dsl/pipeline.rb
CHANGED
@@ -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.
|
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
|
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)
|
data/lib/tapioca/gemfile.rb
CHANGED
@@ -178,7 +178,18 @@ module Tapioca
|
|
178
178
|
|
179
179
|
sig { void }
|
180
180
|
def parse_yard_docs
|
181
|
-
files.each
|
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:
|
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]) }
|
data/lib/tapioca/version.rb
CHANGED
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.
|
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-
|
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.
|
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.
|
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.
|
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
|