terminal-shop 1.8.0 → 2.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 (220) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +14 -0
  3. data/lib/terminal-shop/base_client.rb +11 -10
  4. data/lib/terminal-shop/base_model.rb +257 -244
  5. data/lib/terminal-shop/base_page.rb +19 -20
  6. data/lib/terminal-shop/client.rb +1 -0
  7. data/lib/terminal-shop/models/product.rb +7 -3
  8. data/lib/terminal-shop/models/region.rb +7 -3
  9. data/lib/terminal-shop/models/subscription.rb +5 -7
  10. data/lib/terminal-shop/pooled_net_requester.rb +12 -1
  11. data/lib/terminal-shop/request_options.rb +1 -1
  12. data/lib/terminal-shop/util.rb +16 -7
  13. data/lib/terminal-shop/version.rb +1 -1
  14. data/lib/terminal-shop.rb +15 -0
  15. data/rbi/lib/terminal-shop/base_client.rbi +40 -41
  16. data/rbi/lib/terminal-shop/base_model.rbi +139 -116
  17. data/rbi/lib/terminal-shop/base_page.rbi +0 -2
  18. data/rbi/lib/terminal-shop/client.rbi +18 -30
  19. data/rbi/lib/terminal-shop/errors.rbi +7 -42
  20. data/rbi/lib/terminal-shop/models/address.rbi +15 -51
  21. data/rbi/lib/terminal-shop/models/address_create_params.rbi +15 -46
  22. data/rbi/lib/terminal-shop/models/address_create_response.rbi +1 -6
  23. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
  24. data/rbi/lib/terminal-shop/models/address_delete_response.rbi +1 -6
  25. data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
  26. data/rbi/lib/terminal-shop/models/address_get_response.rbi +7 -6
  27. data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
  28. data/rbi/lib/terminal-shop/models/address_list_response.rbi +4 -6
  29. data/rbi/lib/terminal-shop/models/app.rbi +4 -24
  30. data/rbi/lib/terminal-shop/models/app_create_params.rbi +3 -13
  31. data/rbi/lib/terminal-shop/models/app_create_response.rbi +8 -20
  32. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
  33. data/rbi/lib/terminal-shop/models/app_delete_response.rbi +1 -6
  34. data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
  35. data/rbi/lib/terminal-shop/models/app_get_response.rbi +4 -6
  36. data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
  37. data/rbi/lib/terminal-shop/models/app_list_response.rbi +4 -6
  38. data/rbi/lib/terminal-shop/models/card.rbi +14 -36
  39. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
  40. data/rbi/lib/terminal-shop/models/card_collect_response.rbi +7 -14
  41. data/rbi/lib/terminal-shop/models/card_create_params.rbi +2 -7
  42. data/rbi/lib/terminal-shop/models/card_create_response.rbi +1 -6
  43. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
  44. data/rbi/lib/terminal-shop/models/card_delete_response.rbi +1 -6
  45. data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
  46. data/rbi/lib/terminal-shop/models/card_get_response.rbi +4 -6
  47. data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
  48. data/rbi/lib/terminal-shop/models/card_list_response.rbi +4 -6
  49. data/rbi/lib/terminal-shop/models/cart.rbi +34 -88
  50. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
  51. data/rbi/lib/terminal-shop/models/cart_clear_response.rbi +1 -6
  52. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
  53. data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +4 -6
  54. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
  55. data/rbi/lib/terminal-shop/models/cart_get_response.rbi +4 -6
  56. data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +2 -7
  57. data/rbi/lib/terminal-shop/models/cart_set_address_response.rbi +1 -6
  58. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +2 -7
  59. data/rbi/lib/terminal-shop/models/cart_set_card_response.rbi +1 -6
  60. data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +3 -13
  61. data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +4 -6
  62. data/rbi/lib/terminal-shop/models/email_create_params.rbi +2 -7
  63. data/rbi/lib/terminal-shop/models/email_create_response.rbi +1 -6
  64. data/rbi/lib/terminal-shop/models/order.rbi +52 -139
  65. data/rbi/lib/terminal-shop/models/order_create_params.rbi +4 -19
  66. data/rbi/lib/terminal-shop/models/order_create_response.rbi +1 -6
  67. data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
  68. data/rbi/lib/terminal-shop/models/order_get_response.rbi +4 -6
  69. data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
  70. data/rbi/lib/terminal-shop/models/order_list_response.rbi +4 -6
  71. data/rbi/lib/terminal-shop/models/product.rbi +43 -77
  72. data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
  73. data/rbi/lib/terminal-shop/models/product_get_response.rbi +7 -6
  74. data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
  75. data/rbi/lib/terminal-shop/models/product_list_response.rbi +4 -6
  76. data/rbi/lib/terminal-shop/models/product_variant.rbi +3 -18
  77. data/rbi/lib/terminal-shop/models/profile.rbi +12 -36
  78. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
  79. data/rbi/lib/terminal-shop/models/profile_me_response.rbi +7 -6
  80. data/rbi/lib/terminal-shop/models/profile_update_params.rbi +3 -13
  81. data/rbi/lib/terminal-shop/models/profile_update_response.rbi +7 -6
  82. data/rbi/lib/terminal-shop/models/region.rbi +10 -5
  83. data/rbi/lib/terminal-shop/models/subscription.rbi +28 -75
  84. data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
  85. data/rbi/lib/terminal-shop/models/subscription_create_response.rbi +1 -6
  86. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
  87. data/rbi/lib/terminal-shop/models/subscription_delete_response.rbi +1 -6
  88. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
  89. data/rbi/lib/terminal-shop/models/subscription_get_response.rbi +7 -6
  90. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
  91. data/rbi/lib/terminal-shop/models/subscription_list_response.rbi +3 -8
  92. data/rbi/lib/terminal-shop/models/token.rbi +3 -18
  93. data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
  94. data/rbi/lib/terminal-shop/models/token_create_response.rbi +8 -20
  95. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
  96. data/rbi/lib/terminal-shop/models/token_delete_response.rbi +1 -6
  97. data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
  98. data/rbi/lib/terminal-shop/models/token_get_response.rbi +4 -6
  99. data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
  100. data/rbi/lib/terminal-shop/models/token_list_response.rbi +4 -6
  101. data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
  102. data/rbi/lib/terminal-shop/models/view_init_response.rbi +32 -81
  103. data/rbi/lib/terminal-shop/pooled_net_requester.rbi +14 -3
  104. data/rbi/lib/terminal-shop/request_options.rbi +11 -55
  105. data/rbi/lib/terminal-shop/resources/address.rbi +4 -4
  106. data/rbi/lib/terminal-shop/resources/app.rbi +4 -4
  107. data/rbi/lib/terminal-shop/resources/card.rbi +5 -5
  108. data/rbi/lib/terminal-shop/resources/cart.rbi +6 -6
  109. data/rbi/lib/terminal-shop/resources/email.rbi +1 -1
  110. data/rbi/lib/terminal-shop/resources/order.rbi +3 -3
  111. data/rbi/lib/terminal-shop/resources/product.rbi +2 -2
  112. data/rbi/lib/terminal-shop/resources/profile.rbi +2 -2
  113. data/rbi/lib/terminal-shop/resources/subscription.rbi +5 -4
  114. data/rbi/lib/terminal-shop/resources/token.rbi +4 -4
  115. data/rbi/lib/terminal-shop/resources/view.rbi +1 -1
  116. data/rbi/lib/terminal-shop/util.rbi +24 -13
  117. data/rbi/lib/terminal-shop/version.rbi +1 -1
  118. data/sig/terminal-shop/base_client.rbs +14 -14
  119. data/sig/terminal-shop/base_model.rbs +34 -18
  120. data/sig/terminal-shop/client.rbs +8 -8
  121. data/sig/terminal-shop/errors.rbs +17 -17
  122. data/sig/terminal-shop/models/address.rbs +11 -15
  123. data/sig/terminal-shop/models/address_create_params.rbs +11 -16
  124. data/sig/terminal-shop/models/address_create_response.rbs +1 -6
  125. data/sig/terminal-shop/models/address_delete_params.rbs +1 -6
  126. data/sig/terminal-shop/models/address_delete_response.rbs +1 -6
  127. data/sig/terminal-shop/models/address_get_params.rbs +1 -6
  128. data/sig/terminal-shop/models/address_get_response.rbs +1 -6
  129. data/sig/terminal-shop/models/address_list_params.rbs +1 -6
  130. data/sig/terminal-shop/models/address_list_response.rbs +1 -6
  131. data/sig/terminal-shop/models/app.rbs +6 -5
  132. data/sig/terminal-shop/models/app_create_params.rbs +5 -10
  133. data/sig/terminal-shop/models/app_create_response.rbs +4 -12
  134. data/sig/terminal-shop/models/app_delete_params.rbs +1 -6
  135. data/sig/terminal-shop/models/app_delete_response.rbs +1 -6
  136. data/sig/terminal-shop/models/app_get_params.rbs +1 -5
  137. data/sig/terminal-shop/models/app_get_response.rbs +1 -5
  138. data/sig/terminal-shop/models/app_list_params.rbs +1 -5
  139. data/sig/terminal-shop/models/app_list_response.rbs +1 -6
  140. data/sig/terminal-shop/models/card.rbs +7 -16
  141. data/sig/terminal-shop/models/card_collect_params.rbs +1 -6
  142. data/sig/terminal-shop/models/card_collect_response.rbs +4 -12
  143. data/sig/terminal-shop/models/card_create_params.rbs +4 -6
  144. data/sig/terminal-shop/models/card_create_response.rbs +1 -6
  145. data/sig/terminal-shop/models/card_delete_params.rbs +1 -6
  146. data/sig/terminal-shop/models/card_delete_response.rbs +1 -6
  147. data/sig/terminal-shop/models/card_get_params.rbs +1 -5
  148. data/sig/terminal-shop/models/card_get_response.rbs +1 -6
  149. data/sig/terminal-shop/models/card_list_params.rbs +1 -5
  150. data/sig/terminal-shop/models/card_list_response.rbs +1 -6
  151. data/sig/terminal-shop/models/cart.rbs +20 -34
  152. data/sig/terminal-shop/models/cart_clear_params.rbs +1 -6
  153. data/sig/terminal-shop/models/cart_clear_response.rbs +1 -6
  154. data/sig/terminal-shop/models/cart_convert_params.rbs +1 -6
  155. data/sig/terminal-shop/models/cart_convert_response.rbs +1 -6
  156. data/sig/terminal-shop/models/cart_get_params.rbs +1 -5
  157. data/sig/terminal-shop/models/cart_get_response.rbs +1 -6
  158. data/sig/terminal-shop/models/cart_set_address_params.rbs +4 -9
  159. data/sig/terminal-shop/models/cart_set_address_response.rbs +1 -6
  160. data/sig/terminal-shop/models/cart_set_card_params.rbs +4 -6
  161. data/sig/terminal-shop/models/cart_set_card_response.rbs +1 -6
  162. data/sig/terminal-shop/models/cart_set_item_params.rbs +5 -10
  163. data/sig/terminal-shop/models/cart_set_item_response.rbs +1 -6
  164. data/sig/terminal-shop/models/email_create_params.rbs +4 -6
  165. data/sig/terminal-shop/models/email_create_response.rbs +1 -6
  166. data/sig/terminal-shop/models/order.rbs +31 -50
  167. data/sig/terminal-shop/models/order_create_params.rbs +6 -11
  168. data/sig/terminal-shop/models/order_create_response.rbs +1 -6
  169. data/sig/terminal-shop/models/order_get_params.rbs +1 -5
  170. data/sig/terminal-shop/models/order_get_response.rbs +1 -6
  171. data/sig/terminal-shop/models/order_list_params.rbs +1 -6
  172. data/sig/terminal-shop/models/order_list_response.rbs +1 -6
  173. data/sig/terminal-shop/models/product.rbs +20 -27
  174. data/sig/terminal-shop/models/product_get_params.rbs +1 -6
  175. data/sig/terminal-shop/models/product_get_response.rbs +1 -6
  176. data/sig/terminal-shop/models/product_list_params.rbs +1 -6
  177. data/sig/terminal-shop/models/product_list_response.rbs +1 -6
  178. data/sig/terminal-shop/models/product_variant.rbs +1 -5
  179. data/sig/terminal-shop/models/profile.rbs +8 -17
  180. data/sig/terminal-shop/models/profile_me_params.rbs +1 -6
  181. data/sig/terminal-shop/models/profile_me_response.rbs +1 -6
  182. data/sig/terminal-shop/models/profile_update_params.rbs +5 -10
  183. data/sig/terminal-shop/models/profile_update_response.rbs +1 -6
  184. data/sig/terminal-shop/models/region.rbs +4 -2
  185. data/sig/terminal-shop/models/subscription.rbs +15 -27
  186. data/sig/terminal-shop/models/subscription_create_params.rbs +1 -6
  187. data/sig/terminal-shop/models/subscription_create_response.rbs +1 -6
  188. data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -6
  189. data/sig/terminal-shop/models/subscription_delete_response.rbs +1 -6
  190. data/sig/terminal-shop/models/subscription_get_params.rbs +1 -6
  191. data/sig/terminal-shop/models/subscription_get_response.rbs +1 -6
  192. data/sig/terminal-shop/models/subscription_list_params.rbs +1 -6
  193. data/sig/terminal-shop/models/subscription_list_response.rbs +3 -6
  194. data/sig/terminal-shop/models/token.rbs +1 -5
  195. data/sig/terminal-shop/models/token_create_params.rbs +1 -6
  196. data/sig/terminal-shop/models/token_create_response.rbs +4 -12
  197. data/sig/terminal-shop/models/token_delete_params.rbs +1 -6
  198. data/sig/terminal-shop/models/token_delete_response.rbs +1 -6
  199. data/sig/terminal-shop/models/token_get_params.rbs +1 -5
  200. data/sig/terminal-shop/models/token_get_response.rbs +1 -6
  201. data/sig/terminal-shop/models/token_list_params.rbs +1 -6
  202. data/sig/terminal-shop/models/token_list_response.rbs +1 -6
  203. data/sig/terminal-shop/models/view_init_params.rbs +1 -5
  204. data/sig/terminal-shop/models/view_init_response.rbs +15 -23
  205. data/sig/terminal-shop/pooled_net_requester.rbs +3 -1
  206. data/sig/terminal-shop/request_options.rbs +2 -2
  207. data/sig/terminal-shop/resources/address.rbs +22 -41
  208. data/sig/terminal-shop/resources/app.rbs +16 -34
  209. data/sig/terminal-shop/resources/card.rbs +18 -40
  210. data/sig/terminal-shop/resources/cart.rbs +22 -47
  211. data/sig/terminal-shop/resources/email.rbs +4 -8
  212. data/sig/terminal-shop/resources/order.rbs +13 -26
  213. data/sig/terminal-shop/resources/product.rbs +7 -16
  214. data/sig/terminal-shop/resources/profile.rbs +8 -16
  215. data/sig/terminal-shop/resources/subscription.rbs +21 -43
  216. data/sig/terminal-shop/resources/token.rbs +14 -32
  217. data/sig/terminal-shop/resources/view.rbs +3 -7
  218. data/sig/terminal-shop/util.rbs +5 -5
  219. data/sig/terminal-shop/version.rbs +1 -1
  220. metadata +2 -2
@@ -170,132 +170,116 @@ module TerminalShop
170
170
  #
171
171
  # We can therefore convert string values to Symbols, but can't convert other
172
172
  # values safely.
173
- class Enum
174
- extend TerminalShop::Converter
175
-
176
- abstract!
177
-
178
- Value = type_template(:out)
173
+ module Enum
174
+ include TerminalShop::Converter
179
175
 
180
- class << self
181
- # All of the valid Symbol values for this enum.
182
- sig { overridable.returns(T::Array[Value]) }
183
- def values
184
- end
176
+ # All of the valid Symbol values for this enum.
177
+ sig { overridable.returns(T::Array[T.any(NilClass, T::Boolean, Integer, Float, Symbol)]) }
178
+ def values
179
+ end
185
180
 
186
- # @api private
187
- #
188
- # Guard against thread safety issues by instantiating `@values`.
189
- sig { void }
190
- private def finalize!
191
- end
181
+ # @api private
182
+ #
183
+ # Guard against thread safety issues by instantiating `@values`.
184
+ sig { void }
185
+ private def finalize!
192
186
  end
193
187
 
194
188
  sig { params(other: T.anything).returns(T::Boolean) }
195
- def self.===(other)
189
+ def ===(other)
196
190
  end
197
191
 
198
192
  sig { params(other: T.anything).returns(T::Boolean) }
199
- def self.==(other)
193
+ def ==(other)
200
194
  end
201
195
 
202
- class << self
203
- # @api private
204
- sig { override.params(value: T.any(String, Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
205
- def coerce(value)
206
- end
196
+ # @api private
197
+ sig { override.params(value: T.any(String, Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
198
+ def coerce(value)
199
+ end
207
200
 
208
- # @api private
209
- sig { override.params(value: T.any(Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
210
- def dump(value)
211
- end
201
+ # @api private
202
+ sig { override.params(value: T.any(Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
203
+ def dump(value)
204
+ end
212
205
 
213
- # @api private
214
- sig do
215
- override
216
- .params(value: T.anything)
217
- .returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
218
- end
219
- def try_strict_coerce(value)
220
- end
206
+ # @api private
207
+ sig do
208
+ override
209
+ .params(value: T.anything)
210
+ .returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
211
+ end
212
+ def try_strict_coerce(value)
221
213
  end
222
214
  end
223
215
 
224
216
  # @api private
225
- class Union
226
- extend TerminalShop::Converter
227
-
228
- abstract!
229
-
230
- Variants = type_template(:out)
217
+ module Union
218
+ include TerminalShop::Converter
231
219
 
232
- class << self
233
- # @api private
234
- #
235
- # All of the specified variant info for this union.
236
- sig { returns(T::Array[[T.nilable(Symbol), T.proc.returns(Variants)]]) }
237
- private def known_variants
238
- end
220
+ # @api private
221
+ #
222
+ # All of the specified variant info for this union.
223
+ sig { returns(T::Array[[T.nilable(Symbol), T.proc.returns(TerminalShop::Converter::Input)]]) }
224
+ private def known_variants
225
+ end
239
226
 
240
- # @api private
241
- sig { returns(T::Array[[T.nilable(Symbol), Variants]]) }
242
- protected def derefed_variants
243
- end
227
+ # @api private
228
+ sig { returns(T::Array[[T.nilable(Symbol), T.anything]]) }
229
+ protected def derefed_variants
230
+ end
244
231
 
245
- # All of the specified variants for this union.
246
- sig { overridable.returns(T::Array[Variants]) }
247
- def variants
248
- end
232
+ # All of the specified variants for this union.
233
+ sig { overridable.returns(T::Array[T.anything]) }
234
+ def variants
235
+ end
249
236
 
250
- # @api private
251
- sig { params(property: Symbol).void }
252
- private def discriminator(property)
253
- end
237
+ # @api private
238
+ sig { params(property: Symbol).void }
239
+ private def discriminator(property)
240
+ end
254
241
 
255
- # @api private
256
- sig do
257
- params(
258
- key: T.any(Symbol, T::Hash[Symbol, T.anything], T.proc.returns(Variants), Variants),
259
- spec: T.any(T::Hash[Symbol, T.anything], T.proc.returns(Variants), Variants)
260
- )
261
- .void
262
- end
263
- private def variant(key, spec = nil)
264
- end
242
+ # @api private
243
+ sig do
244
+ params(
245
+ key: T.any(Symbol, TerminalShop::Util::AnyHash, T.proc.returns(T.anything), T.anything),
246
+ spec: T.any(TerminalShop::Util::AnyHash, T.proc.returns(T.anything), T.anything)
247
+ )
248
+ .void
249
+ end
250
+ private def variant(key, spec = nil)
251
+ end
265
252
 
266
- # @api private
267
- sig { params(value: T.anything).returns(T.nilable(Variants)) }
268
- private def resolve_variant(value)
269
- end
253
+ # @api private
254
+ sig { params(value: T.anything).returns(T.nilable(T.anything)) }
255
+ private def resolve_variant(value)
270
256
  end
271
257
 
272
258
  sig { params(other: T.anything).returns(T::Boolean) }
273
- def self.===(other)
259
+ def ===(other)
274
260
  end
275
261
 
276
262
  sig { params(other: T.anything).returns(T::Boolean) }
277
- def self.==(other)
263
+ def ==(other)
278
264
  end
279
265
 
280
- class << self
281
- # @api private
282
- sig { override.params(value: T.anything).returns(T.anything) }
283
- def coerce(value)
284
- end
266
+ # @api private
267
+ sig { override.params(value: T.anything).returns(T.anything) }
268
+ def coerce(value)
269
+ end
285
270
 
286
- # @api private
287
- sig { override.params(value: T.anything).returns(T.anything) }
288
- def dump(value)
289
- end
271
+ # @api private
272
+ sig { override.params(value: T.anything).returns(T.anything) }
273
+ def dump(value)
274
+ end
290
275
 
291
- # @api private
292
- sig do
293
- override
294
- .params(value: T.anything)
295
- .returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
296
- end
297
- def try_strict_coerce(value)
298
- end
276
+ # @api private
277
+ sig do
278
+ override
279
+ .params(value: T.anything)
280
+ .returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
281
+ end
282
+ def try_strict_coerce(value)
299
283
  end
300
284
  end
301
285
 
@@ -308,7 +292,19 @@ module TerminalShop
308
292
  abstract!
309
293
  final!
310
294
 
311
- Elem = type_member(:out)
295
+ sig(:final) do
296
+ params(
297
+ type_info: T.any(
298
+ TerminalShop::Util::AnyHash,
299
+ T.proc.returns(TerminalShop::Converter::Input),
300
+ TerminalShop::Converter::Input
301
+ ),
302
+ spec: TerminalShop::Util::AnyHash
303
+ )
304
+ .returns(T.attached_class)
305
+ end
306
+ def self.[](type_info, spec = {})
307
+ end
312
308
 
313
309
  sig(:final) { params(other: T.anything).returns(T::Boolean) }
314
310
  def ===(other)
@@ -346,7 +342,7 @@ module TerminalShop
346
342
  end
347
343
 
348
344
  # @api private
349
- sig(:final) { returns(Elem) }
345
+ sig(:final) { returns(T.anything) }
350
346
  protected def item_type
351
347
  end
352
348
 
@@ -354,15 +350,15 @@ module TerminalShop
354
350
  sig(:final) do
355
351
  params(
356
352
  type_info: T.any(
357
- T::Hash[Symbol, T.anything],
353
+ TerminalShop::Util::AnyHash,
358
354
  T.proc.returns(TerminalShop::Converter::Input),
359
355
  TerminalShop::Converter::Input
360
356
  ),
361
- spec: T::Hash[Symbol, T.anything]
357
+ spec: TerminalShop::Util::AnyHash
362
358
  )
363
- .returns(T.attached_class)
359
+ .void
364
360
  end
365
- def self.new(type_info, spec = {})
361
+ def initialize(type_info, spec = {})
366
362
  end
367
363
  end
368
364
 
@@ -375,7 +371,19 @@ module TerminalShop
375
371
  abstract!
376
372
  final!
377
373
 
378
- Elem = type_member(:out)
374
+ sig(:final) do
375
+ params(
376
+ type_info: T.any(
377
+ TerminalShop::Util::AnyHash,
378
+ T.proc.returns(TerminalShop::Converter::Input),
379
+ TerminalShop::Converter::Input
380
+ ),
381
+ spec: TerminalShop::Util::AnyHash
382
+ )
383
+ .returns(T.attached_class)
384
+ end
385
+ def self.[](type_info, spec = {})
386
+ end
379
387
 
380
388
  sig(:final) { params(other: T.anything).returns(T::Boolean) }
381
389
  def ===(other)
@@ -389,7 +397,7 @@ module TerminalShop
389
397
  sig(:final) do
390
398
  override
391
399
  .params(value: T.any(T::Hash[T.anything, T.anything], T.anything))
392
- .returns(T.any(T::Hash[Symbol, T.anything], T.anything))
400
+ .returns(T.any(TerminalShop::Util::AnyHash, T.anything))
393
401
  end
394
402
  def coerce(value)
395
403
  end
@@ -398,7 +406,7 @@ module TerminalShop
398
406
  sig(:final) do
399
407
  override
400
408
  .params(value: T.any(T::Hash[T.anything, T.anything], T.anything))
401
- .returns(T.any(T::Hash[Symbol, T.anything], T.anything))
409
+ .returns(T.any(TerminalShop::Util::AnyHash, T.anything))
402
410
  end
403
411
  def dump(value)
404
412
  end
@@ -413,7 +421,7 @@ module TerminalShop
413
421
  end
414
422
 
415
423
  # @api private
416
- sig(:final) { returns(Elem) }
424
+ sig(:final) { returns(T.anything) }
417
425
  protected def item_type
418
426
  end
419
427
 
@@ -421,15 +429,15 @@ module TerminalShop
421
429
  sig(:final) do
422
430
  params(
423
431
  type_info: T.any(
424
- T::Hash[Symbol, T.anything],
432
+ TerminalShop::Util::AnyHash,
425
433
  T.proc.returns(TerminalShop::Converter::Input),
426
434
  TerminalShop::Converter::Input
427
435
  ),
428
- spec: T::Hash[Symbol, T.anything]
436
+ spec: TerminalShop::Util::AnyHash
429
437
  )
430
- .returns(T.attached_class)
438
+ .void
431
439
  end
432
- def self.new(type_info, spec = {})
440
+ def initialize(type_info, spec = {})
433
441
  end
434
442
  end
435
443
 
@@ -459,6 +467,11 @@ module TerminalShop
459
467
  def known_fields
460
468
  end
461
469
 
470
+ # @api private
471
+ sig { returns(T::Hash[Symbol, Symbol]) }
472
+ def reverse_map
473
+ end
474
+
462
475
  # @api private
463
476
  sig do
464
477
  returns(
@@ -490,7 +503,7 @@ module TerminalShop
490
503
  T.proc.returns(TerminalShop::Converter::Input),
491
504
  TerminalShop::Converter::Input
492
505
  ),
493
- spec: T::Hash[Symbol, T.anything]
506
+ spec: TerminalShop::Util::AnyHash
494
507
  )
495
508
  .void
496
509
  end
@@ -502,11 +515,11 @@ module TerminalShop
502
515
  params(
503
516
  name_sym: Symbol,
504
517
  type_info: T.any(
505
- T::Hash[Symbol, T.anything],
518
+ TerminalShop::Util::AnyHash,
506
519
  T.proc.returns(TerminalShop::Converter::Input),
507
520
  TerminalShop::Converter::Input
508
521
  ),
509
- spec: T::Hash[Symbol, T.anything]
522
+ spec: TerminalShop::Util::AnyHash
510
523
  )
511
524
  .void
512
525
  end
@@ -518,11 +531,11 @@ module TerminalShop
518
531
  params(
519
532
  name_sym: Symbol,
520
533
  type_info: T.any(
521
- T::Hash[Symbol, T.anything],
534
+ TerminalShop::Util::AnyHash,
522
535
  T.proc.returns(TerminalShop::Converter::Input),
523
536
  TerminalShop::Converter::Input
524
537
  ),
525
- spec: T::Hash[Symbol, T.anything]
538
+ spec: TerminalShop::Util::AnyHash
526
539
  )
527
540
  .void
528
541
  end
@@ -596,13 +609,23 @@ module TerminalShop
596
609
  #
597
610
  # This method is not recursive. The returned value is shared by the object, so it
598
611
  # should not be mutated.
599
- sig { overridable.returns(T::Hash[Symbol, T.anything]) }
612
+ sig { overridable.returns(TerminalShop::Util::AnyHash) }
600
613
  def to_h
601
614
  end
602
615
 
603
- alias_method :to_hash, :to_h
616
+ # Returns a Hash of the data underlying this object. O(1)
617
+ #
618
+ # Keys are Symbols and values are the raw values from the response. The return
619
+ # value indicates which values were ever set on the object. i.e. there will be a
620
+ # key in this hash if they ever were, even if the set value was nil.
621
+ #
622
+ # This method is not recursive. The returned value is shared by the object, so it
623
+ # should not be mutated.
624
+ sig { overridable.returns(TerminalShop::Util::AnyHash) }
625
+ def to_hash
626
+ end
604
627
 
605
- sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.anything]) }
628
+ sig { params(keys: T.nilable(T::Array[Symbol])).returns(TerminalShop::Util::AnyHash) }
606
629
  def deconstruct_keys(keys)
607
630
  end
608
631
 
@@ -20,8 +20,6 @@ module TerminalShop
20
20
  def to_enum
21
21
  end
22
22
 
23
- alias_method :enum_for, :to_enum
24
-
25
23
  # @api private
26
24
  sig do
27
25
  params(
@@ -10,62 +10,50 @@ module TerminalShop
10
10
 
11
11
  DEFAULT_MAX_RETRY_DELAY = T.let(8.0, Float)
12
12
 
13
- ENVIRONMENTS = T.let(
14
- {production: "https://api.terminal.shop/", dev: "https://api.dev.terminal.shop/"},
15
- T::Hash[Symbol, String]
16
- )
13
+ ENVIRONMENTS =
14
+ T.let(
15
+ {production: "https://api.terminal.shop/", dev: "https://api.dev.terminal.shop/"},
16
+ T::Hash[Symbol, String]
17
+ )
17
18
 
18
19
  sig { returns(String) }
19
- def bearer_token
20
- end
20
+ attr_reader :bearer_token
21
21
 
22
22
  sig { returns(T.nilable(String)) }
23
- def app_id
24
- end
23
+ attr_reader :app_id
25
24
 
26
25
  sig { returns(TerminalShop::Resources::Product) }
27
- def product
28
- end
26
+ attr_reader :product
29
27
 
30
28
  sig { returns(TerminalShop::Resources::Profile) }
31
- def profile
32
- end
29
+ attr_reader :profile
33
30
 
34
31
  sig { returns(TerminalShop::Resources::Address) }
35
- def address
36
- end
32
+ attr_reader :address
37
33
 
38
34
  sig { returns(TerminalShop::Resources::Card) }
39
- def card
40
- end
35
+ attr_reader :card
41
36
 
42
37
  sig { returns(TerminalShop::Resources::Cart) }
43
- def cart
44
- end
38
+ attr_reader :cart
45
39
 
46
40
  sig { returns(TerminalShop::Resources::Order) }
47
- def order
48
- end
41
+ attr_reader :order
49
42
 
50
43
  sig { returns(TerminalShop::Resources::Subscription) }
51
- def subscription
52
- end
44
+ attr_reader :subscription
53
45
 
54
46
  sig { returns(TerminalShop::Resources::Token) }
55
- def token
56
- end
47
+ attr_reader :token
57
48
 
58
49
  sig { returns(TerminalShop::Resources::App) }
59
- def app
60
- end
50
+ attr_reader :app
61
51
 
62
52
  sig { returns(TerminalShop::Resources::Email) }
63
- def email
64
- end
53
+ attr_reader :email
65
54
 
66
55
  sig { returns(TerminalShop::Resources::View) }
67
- def view
68
- end
56
+ attr_reader :view
69
57
 
70
58
  # @api private
71
59
  sig { override.returns(T::Hash[String, String]) }
@@ -3,12 +3,7 @@
3
3
  module TerminalShop
4
4
  class Error < StandardError
5
5
  sig { returns(T.nilable(StandardError)) }
6
- def cause
7
- end
8
-
9
- sig { params(_: T.nilable(StandardError)).returns(T.nilable(StandardError)) }
10
- def cause=(_)
11
- end
6
+ attr_accessor :cause
12
7
  end
13
8
 
14
9
  class ConversionError < TerminalShop::Error
@@ -16,28 +11,13 @@ module TerminalShop
16
11
 
17
12
  class APIError < TerminalShop::Error
18
13
  sig { returns(URI::Generic) }
19
- def url
20
- end
21
-
22
- sig { params(_: URI::Generic).returns(URI::Generic) }
23
- def url=(_)
24
- end
14
+ attr_accessor :url
25
15
 
26
16
  sig { returns(T.nilable(Integer)) }
27
- def status
28
- end
29
-
30
- sig { params(_: T.nilable(Integer)).returns(T.nilable(Integer)) }
31
- def status=(_)
32
- end
17
+ attr_accessor :status
33
18
 
34
19
  sig { returns(T.nilable(T.anything)) }
35
- def body
36
- end
37
-
38
- sig { params(_: T.nilable(T.anything)).returns(T.nilable(T.anything)) }
39
- def body=(_)
40
- end
20
+ attr_accessor :body
41
21
 
42
22
  # @api private
43
23
  sig do
@@ -57,20 +37,10 @@ module TerminalShop
57
37
 
58
38
  class APIConnectionError < TerminalShop::APIError
59
39
  sig { void }
60
- def status
61
- end
62
-
63
- sig { params(_: NilClass).void }
64
- def status=(_)
65
- end
40
+ attr_accessor :status
66
41
 
67
42
  sig { void }
68
- def body
69
- end
70
-
71
- sig { params(_: NilClass).void }
72
- def body=(_)
73
- end
43
+ attr_accessor :body
74
44
 
75
45
  # @api private
76
46
  sig do
@@ -122,12 +92,7 @@ module TerminalShop
122
92
  end
123
93
 
124
94
  sig { returns(Integer) }
125
- def status
126
- end
127
-
128
- sig { params(_: Integer).returns(Integer) }
129
- def status=(_)
130
- end
95
+ attr_accessor :status
131
96
 
132
97
  # @api private
133
98
  sig do
@@ -5,84 +5,48 @@ module TerminalShop
5
5
  class AddressAPI < TerminalShop::BaseModel
6
6
  # Unique object identifier. The format and length of IDs may change over time.
7
7
  sig { returns(String) }
8
- def id
9
- end
10
-
11
- sig { params(_: String).returns(String) }
12
- def id=(_)
13
- end
8
+ attr_accessor :id
14
9
 
15
10
  # City of the address.
16
11
  sig { returns(String) }
17
- def city
18
- end
19
-
20
- sig { params(_: String).returns(String) }
21
- def city=(_)
22
- end
12
+ attr_accessor :city
23
13
 
24
14
  # ISO 3166-1 alpha-2 country code of the address.
25
15
  sig { returns(String) }
26
- def country
27
- end
28
-
29
- sig { params(_: String).returns(String) }
30
- def country=(_)
31
- end
16
+ attr_accessor :country
32
17
 
33
18
  # The recipient's name.
34
19
  sig { returns(String) }
35
- def name
36
- end
37
-
38
- sig { params(_: String).returns(String) }
39
- def name=(_)
40
- end
20
+ attr_accessor :name
41
21
 
42
22
  # Street of the address.
43
23
  sig { returns(String) }
44
- def street1
45
- end
46
-
47
- sig { params(_: String).returns(String) }
48
- def street1=(_)
49
- end
24
+ attr_accessor :street1
50
25
 
51
26
  # Zip code of the address.
52
27
  sig { returns(String) }
53
- def zip
54
- end
55
-
56
- sig { params(_: String).returns(String) }
57
- def zip=(_)
58
- end
28
+ attr_accessor :zip
59
29
 
60
30
  # Phone number of the recipient.
61
31
  sig { returns(T.nilable(String)) }
62
- def phone
63
- end
32
+ attr_reader :phone
64
33
 
65
- sig { params(_: String).returns(String) }
66
- def phone=(_)
67
- end
34
+ sig { params(phone: String).void }
35
+ attr_writer :phone
68
36
 
69
37
  # Province or state of the address.
70
38
  sig { returns(T.nilable(String)) }
71
- def province
72
- end
39
+ attr_reader :province
73
40
 
74
- sig { params(_: String).returns(String) }
75
- def province=(_)
76
- end
41
+ sig { params(province: String).void }
42
+ attr_writer :province
77
43
 
78
44
  # Apartment, suite, etc. of the address.
79
45
  sig { returns(T.nilable(String)) }
80
- def street2
81
- end
46
+ attr_reader :street2
82
47
 
83
- sig { params(_: String).returns(String) }
84
- def street2=(_)
85
- end
48
+ sig { params(street2: String).void }
49
+ attr_writer :street2
86
50
 
87
51
  # Physical address associated with a Terminal shop user.
88
52
  sig do