tapioca_dsl_compiler_store_model 0.1.3 → 0.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7cd663ae85d93ae01a2e4b42daa3870976b10de692ed58bed169016b051a2e42
4
- data.tar.gz: 6d39aa14b9f2510eea4bbd67d8c0fd66eb9cc27818c02cdc14443187ad25e1e4
3
+ metadata.gz: 9ca8704a96779f59a3ee54b8c42f056131e3eceb6268aeab78535498e54f7901
4
+ data.tar.gz: 5d6228ccffd7c51a8990bac5ce048b0d4deaed74b40d5c8d0a0de4d273cf1b45
5
5
  SHA512:
6
- metadata.gz: 9d945c99a1571c75eda1f7f1f6d01a8c82ebcda9a4c8dc3cdf677cff9daebed3d2725bacee5dc25e71f8cf85d7c2b7917a0ae124fa6191372c5ccea7484233c4
7
- data.tar.gz: 2f433c5753cd670ed30c51f49c99af4926411015167679bb0d7644f646fe3de0b0e069f3d60fd8009e6fa2a94f9c9d289010d915410051856832eae967c473a6
6
+ metadata.gz: 19c5aa8f9e4fb258d6f1587596c0b45cc97e4a6529477cf01680248c2aaadf23e19610c39634d596afe57473db49b9e5fa5f67da4a9e419b441b13c5574b65c8
7
+ data.tar.gz: caf133e5473fc4e32a39aeaa8c49de518df0b88db1719fe60e4a050a37e2d806fbb3e11680c3b8314cae9e4751be5fc25cf89a25b515307ff952daeb8ac92869
@@ -118,37 +118,42 @@ module Tapioca
118
118
  sig { params(mod: T.untyped, attribute_name: String).void }
119
119
  def create_one_of_single_methods(mod, attribute_name)
120
120
  # OneOf types are dynamically resolved, so we use generic StoreModel::Model types
121
- mod.create_method(
121
+ create_method_unless_overridden(
122
+ mod,
122
123
  attribute_name,
123
- return_type: "T.nilable(StoreModel::Model)"
124
+ return_type: "T.nilable(::StoreModel::Model)"
124
125
  )
125
126
 
126
- mod.create_method(
127
+ create_method_unless_overridden(
128
+ mod,
127
129
  "#{attribute_name}=",
128
130
  parameters: [create_param("value",
129
- type: "T.nilable(T.any(StoreModel::Model, T::Hash[T.untyped, T.untyped]))")],
130
- return_type: "T.nilable(StoreModel::Model)"
131
+ type: "T.nilable(T.any(::StoreModel::Model, T::Hash[T.untyped, T.untyped]))")],
132
+ return_type: "T.nilable(::StoreModel::Model)"
131
133
  )
132
134
 
133
- mod.create_method(
135
+ create_method_unless_overridden(
136
+ mod,
134
137
  "build_#{attribute_name}",
135
138
  parameters: [create_kw_opt_param("attributes", type: "T::Hash[T.untyped, T.untyped]", default: "{}")],
136
- return_type: "StoreModel::Model"
139
+ return_type: "::StoreModel::Model"
137
140
  )
138
141
  end
139
142
 
140
143
  sig { params(mod: T.untyped, attribute_name: String).void }
141
144
  def create_one_of_array_methods(mod, attribute_name)
142
145
  # OneOf array types are dynamically resolved
143
- array_type = "T::Array[StoreModel::Model]"
146
+ array_type = "T::Array[::StoreModel::Model]"
144
147
  nilable_array_type = "T.nilable(#{array_type})"
145
148
 
146
- mod.create_method(
149
+ create_method_unless_overridden(
150
+ mod,
147
151
  attribute_name,
148
152
  return_type: nilable_array_type
149
153
  )
150
154
 
151
- mod.create_method(
155
+ create_method_unless_overridden(
156
+ mod,
152
157
  "#{attribute_name}=",
153
158
  parameters: [create_param("value",
154
159
  type: "T.nilable(T.any(#{array_type}, " \
@@ -159,21 +164,24 @@ module Tapioca
159
164
 
160
165
  sig { params(mod: T.untyped, attribute_name: String, model_klass: T.untyped).void }
161
166
  def create_single_store_model_methods(mod, attribute_name, model_klass)
162
- return_type = model_klass.name
167
+ return_type = "::#{model_klass.name}"
163
168
 
164
- mod.create_method(
169
+ create_method_unless_overridden(
170
+ mod,
165
171
  attribute_name,
166
172
  return_type: "T.nilable(#{return_type})"
167
173
  )
168
174
 
169
- mod.create_method(
175
+ create_method_unless_overridden(
176
+ mod,
170
177
  "#{attribute_name}=",
171
178
  parameters: [create_param("value",
172
179
  type: "T.nilable(T.any(#{return_type}, T::Hash[T.untyped, T.untyped]))")],
173
180
  return_type: "T.nilable(#{return_type})"
174
181
  )
175
182
 
176
- mod.create_method(
183
+ create_method_unless_overridden(
184
+ mod,
177
185
  "build_#{attribute_name}",
178
186
  parameters: [create_kw_opt_param("attributes", type: "T::Hash[T.untyped, T.untyped]", default: "{}")],
179
187
  return_type: return_type
@@ -182,16 +190,18 @@ module Tapioca
182
190
 
183
191
  sig { params(mod: T.untyped, attribute_name: String, model_klass: T.untyped).void }
184
192
  def create_many_store_model_methods(mod, attribute_name, model_klass)
185
- return_type = model_klass.name
193
+ return_type = "::#{model_klass.name}"
186
194
  array_type = "T::Array[#{return_type}]"
187
195
  nilable_array_type = "T.nilable(#{array_type})"
188
196
 
189
- mod.create_method(
197
+ create_method_unless_overridden(
198
+ mod,
190
199
  attribute_name,
191
200
  return_type: nilable_array_type
192
201
  )
193
202
 
194
- mod.create_method(
203
+ create_method_unless_overridden(
204
+ mod,
195
205
  "#{attribute_name}=",
196
206
  parameters: [create_param("value",
197
207
  type: "T.nilable(T.any(#{array_type}, " \
@@ -199,6 +209,26 @@ module Tapioca
199
209
  return_type: nilable_array_type
200
210
  )
201
211
  end
212
+
213
+ # Skip sig emission when the user has overridden the method (e.g. via
214
+ # `delegate`), as the arity mismatch causes Sorbet error 4010.
215
+ sig { params(mod: T.untyped, name: T.any(String, Symbol), kwargs: T.untyped).void }
216
+ def create_method_unless_overridden(mod, name, **kwargs) # rubocop:disable Style/ArgumentsForwarding
217
+ return if user_overridden?(name)
218
+
219
+ mod.create_method(name.to_s, **kwargs) # rubocop:disable Style/ArgumentsForwarding
220
+ end
221
+
222
+ sig { params(method_name: T.any(String, Symbol)).returns(T::Boolean) }
223
+ def user_overridden?(method_name)
224
+ name = method_name.to_sym
225
+ return false unless constant.method_defined?(name) ||
226
+ constant.private_method_defined?(name)
227
+
228
+ constant.instance_method(name).owner == constant
229
+ rescue NameError
230
+ false
231
+ end
202
232
  end
203
233
  end
204
234
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TapiocaDslCompilerStoreModel
4
- VERSION = "0.1.3"
4
+ VERSION = "0.1.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapioca_dsl_compiler_store_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - speria-jp
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-06-29 00:00:00.000000000 Z
11
+ date: 2026-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: store_model