terminal-shop 3.6.1 → 3.7.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 (274) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +34 -0
  3. data/README.md +3 -3
  4. data/lib/terminal_shop/errors.rb +1 -1
  5. data/lib/terminal_shop/file_part.rb +2 -2
  6. data/lib/terminal_shop/internal/transport/base_client.rb +77 -5
  7. data/lib/terminal_shop/internal/transport/pooled_net_requester.rb +14 -0
  8. data/lib/terminal_shop/internal/type/array_of.rb +1 -1
  9. data/lib/terminal_shop/internal/type/base_model.rb +62 -30
  10. data/lib/terminal_shop/internal/type/converter.rb +18 -0
  11. data/lib/terminal_shop/internal/type/enum.rb +5 -4
  12. data/lib/terminal_shop/internal/type/hash_of.rb +1 -1
  13. data/lib/terminal_shop/internal/type/request_parameters.rb +4 -4
  14. data/lib/terminal_shop/internal/type/union.rb +1 -0
  15. data/lib/terminal_shop/internal/util.rb +57 -1
  16. data/lib/terminal_shop/internal.rb +6 -0
  17. data/lib/terminal_shop/models/address.rb +3 -3
  18. data/lib/terminal_shop/models/address_get_response.rb +3 -3
  19. data/lib/terminal_shop/models/address_list_response.rb +3 -3
  20. data/lib/terminal_shop/models/app.rb +3 -3
  21. data/lib/terminal_shop/models/app_get_response.rb +3 -3
  22. data/lib/terminal_shop/models/app_list_response.rb +3 -3
  23. data/lib/terminal_shop/models/card.rb +7 -7
  24. data/lib/terminal_shop/models/card_collect_response.rb +0 -1
  25. data/lib/terminal_shop/models/card_create_params.rb +0 -1
  26. data/lib/terminal_shop/models/card_get_response.rb +3 -3
  27. data/lib/terminal_shop/models/card_list_response.rb +3 -3
  28. data/lib/terminal_shop/models/cart.rb +13 -13
  29. data/lib/terminal_shop/models/cart_convert_response.rb +3 -3
  30. data/lib/terminal_shop/models/cart_get_response.rb +3 -3
  31. data/lib/terminal_shop/models/cart_set_item_response.rb +3 -3
  32. data/lib/terminal_shop/models/order.rb +24 -24
  33. data/lib/terminal_shop/models/order_get_response.rb +3 -3
  34. data/lib/terminal_shop/models/order_list_response.rb +3 -3
  35. data/lib/terminal_shop/models/product.rb +14 -14
  36. data/lib/terminal_shop/models/product_get_response.rb +3 -3
  37. data/lib/terminal_shop/models/product_list_response.rb +3 -3
  38. data/lib/terminal_shop/models/product_variant.rb +6 -6
  39. data/lib/terminal_shop/models/profile.rb +6 -6
  40. data/lib/terminal_shop/models/profile_me_response.rb +3 -3
  41. data/lib/terminal_shop/models/profile_update_response.rb +3 -3
  42. data/lib/terminal_shop/models/subscription.rb +18 -9
  43. data/lib/terminal_shop/models/subscription_get_response.rb +3 -3
  44. data/lib/terminal_shop/models/subscription_list_response.rb +3 -3
  45. data/lib/terminal_shop/models/subscription_update_params.rb +15 -6
  46. data/lib/terminal_shop/models/subscription_update_response.rb +3 -3
  47. data/lib/terminal_shop/models/token.rb +3 -3
  48. data/lib/terminal_shop/models/token_create_response.rb +0 -1
  49. data/lib/terminal_shop/models/token_get_response.rb +3 -4
  50. data/lib/terminal_shop/models/token_list_response.rb +3 -3
  51. data/lib/terminal_shop/models/view_init_response.rb +30 -31
  52. data/lib/terminal_shop/models.rb +27 -0
  53. data/lib/terminal_shop/request_options.rb +4 -0
  54. data/lib/terminal_shop/resources/address.rb +1 -1
  55. data/lib/terminal_shop/resources/app.rb +1 -1
  56. data/lib/terminal_shop/resources/card.rb +1 -2
  57. data/lib/terminal_shop/resources/cart.rb +3 -3
  58. data/lib/terminal_shop/resources/email.rb +1 -1
  59. data/lib/terminal_shop/resources/order.rb +1 -1
  60. data/lib/terminal_shop/resources/profile.rb +1 -1
  61. data/lib/terminal_shop/resources/subscription.rb +5 -5
  62. data/lib/terminal_shop/version.rb +1 -1
  63. data/lib/terminal_shop.rb +3 -0
  64. data/rbi/terminal_shop/client.rbi +9 -5
  65. data/rbi/terminal_shop/errors.rbi +35 -16
  66. data/rbi/terminal_shop/file_part.rbi +9 -6
  67. data/rbi/terminal_shop/internal/transport/base_client.rbi +165 -77
  68. data/rbi/terminal_shop/internal/transport/pooled_net_requester.rbi +29 -13
  69. data/rbi/terminal_shop/internal/type/array_of.rbi +34 -24
  70. data/rbi/terminal_shop/internal/type/base_model.rbi +155 -70
  71. data/rbi/terminal_shop/internal/type/base_page.rbi +13 -8
  72. data/rbi/terminal_shop/internal/type/boolean.rbi +16 -14
  73. data/rbi/terminal_shop/internal/type/converter.rbi +72 -28
  74. data/rbi/terminal_shop/internal/type/enum.rbi +24 -13
  75. data/rbi/terminal_shop/internal/type/file_input.rbi +8 -4
  76. data/rbi/terminal_shop/internal/type/hash_of.rbi +34 -24
  77. data/rbi/terminal_shop/internal/type/request_parameters.rbi +14 -4
  78. data/rbi/terminal_shop/internal/type/union.rbi +53 -22
  79. data/rbi/terminal_shop/internal/type/unknown.rbi +16 -6
  80. data/rbi/terminal_shop/internal/util.rbi +236 -91
  81. data/rbi/terminal_shop/internal.rbi +2 -0
  82. data/rbi/terminal_shop/models/address.rbi +25 -19
  83. data/rbi/terminal_shop/models/address_create_params.rbi +28 -19
  84. data/rbi/terminal_shop/models/address_create_response.rbi +14 -3
  85. data/rbi/terminal_shop/models/address_delete_params.rbi +18 -5
  86. data/rbi/terminal_shop/models/address_delete_response.rbi +13 -3
  87. data/rbi/terminal_shop/models/address_get_params.rbi +15 -5
  88. data/rbi/terminal_shop/models/address_get_response.rbi +17 -7
  89. data/rbi/terminal_shop/models/address_list_params.rbi +18 -5
  90. data/rbi/terminal_shop/models/address_list_response.rbi +18 -6
  91. data/rbi/terminal_shop/models/app.rbi +23 -4
  92. data/rbi/terminal_shop/models/app_create_params.rbi +18 -6
  93. data/rbi/terminal_shop/models/app_create_response.rbi +37 -9
  94. data/rbi/terminal_shop/models/app_delete_params.rbi +15 -5
  95. data/rbi/terminal_shop/models/app_delete_response.rbi +13 -3
  96. data/rbi/terminal_shop/models/app_get_params.rbi +15 -5
  97. data/rbi/terminal_shop/models/app_get_response.rbi +17 -7
  98. data/rbi/terminal_shop/models/app_list_params.rbi +15 -5
  99. data/rbi/terminal_shop/models/app_list_response.rbi +18 -6
  100. data/rbi/terminal_shop/models/card.rbi +37 -14
  101. data/rbi/terminal_shop/models/card_collect_params.rbi +18 -5
  102. data/rbi/terminal_shop/models/card_collect_response.rbi +40 -9
  103. data/rbi/terminal_shop/models/card_create_params.rbi +17 -6
  104. data/rbi/terminal_shop/models/card_create_response.rbi +14 -3
  105. data/rbi/terminal_shop/models/card_delete_params.rbi +15 -5
  106. data/rbi/terminal_shop/models/card_delete_response.rbi +13 -3
  107. data/rbi/terminal_shop/models/card_get_params.rbi +15 -5
  108. data/rbi/terminal_shop/models/card_get_response.rbi +17 -7
  109. data/rbi/terminal_shop/models/card_list_params.rbi +15 -5
  110. data/rbi/terminal_shop/models/card_list_response.rbi +18 -6
  111. data/rbi/terminal_shop/models/cart.rbi +93 -36
  112. data/rbi/terminal_shop/models/cart_clear_params.rbi +15 -5
  113. data/rbi/terminal_shop/models/cart_clear_response.rbi +13 -3
  114. data/rbi/terminal_shop/models/cart_convert_params.rbi +18 -5
  115. data/rbi/terminal_shop/models/cart_convert_response.rbi +17 -7
  116. data/rbi/terminal_shop/models/cart_get_params.rbi +15 -5
  117. data/rbi/terminal_shop/models/cart_get_response.rbi +17 -7
  118. data/rbi/terminal_shop/models/cart_set_address_params.rbi +20 -6
  119. data/rbi/terminal_shop/models/cart_set_address_response.rbi +13 -3
  120. data/rbi/terminal_shop/models/cart_set_card_params.rbi +20 -6
  121. data/rbi/terminal_shop/models/cart_set_card_response.rbi +13 -3
  122. data/rbi/terminal_shop/models/cart_set_item_params.rbi +22 -11
  123. data/rbi/terminal_shop/models/cart_set_item_response.rbi +17 -7
  124. data/rbi/terminal_shop/models/email_create_params.rbi +20 -6
  125. data/rbi/terminal_shop/models/email_create_response.rbi +13 -3
  126. data/rbi/terminal_shop/models/order.rbi +172 -87
  127. data/rbi/terminal_shop/models/order_create_params.rbi +23 -14
  128. data/rbi/terminal_shop/models/order_create_response.rbi +14 -3
  129. data/rbi/terminal_shop/models/order_get_params.rbi +15 -5
  130. data/rbi/terminal_shop/models/order_get_response.rbi +17 -7
  131. data/rbi/terminal_shop/models/order_list_params.rbi +15 -5
  132. data/rbi/terminal_shop/models/order_list_response.rbi +18 -6
  133. data/rbi/terminal_shop/models/product.rbi +78 -44
  134. data/rbi/terminal_shop/models/product_get_params.rbi +15 -5
  135. data/rbi/terminal_shop/models/product_get_response.rbi +17 -7
  136. data/rbi/terminal_shop/models/product_list_params.rbi +18 -5
  137. data/rbi/terminal_shop/models/product_list_response.rbi +18 -6
  138. data/rbi/terminal_shop/models/product_variant.rbi +46 -15
  139. data/rbi/terminal_shop/models/profile.rbi +39 -21
  140. data/rbi/terminal_shop/models/profile_me_params.rbi +15 -5
  141. data/rbi/terminal_shop/models/profile_me_response.rbi +17 -7
  142. data/rbi/terminal_shop/models/profile_update_params.rbi +23 -6
  143. data/rbi/terminal_shop/models/profile_update_response.rbi +17 -7
  144. data/rbi/terminal_shop/models/region.rbi +7 -6
  145. data/rbi/terminal_shop/models/subscription.rbi +82 -46
  146. data/rbi/terminal_shop/models/subscription_create_params.rbi +18 -5
  147. data/rbi/terminal_shop/models/subscription_create_response.rbi +13 -3
  148. data/rbi/terminal_shop/models/subscription_delete_params.rbi +18 -5
  149. data/rbi/terminal_shop/models/subscription_delete_response.rbi +13 -3
  150. data/rbi/terminal_shop/models/subscription_get_params.rbi +18 -5
  151. data/rbi/terminal_shop/models/subscription_get_response.rbi +19 -7
  152. data/rbi/terminal_shop/models/subscription_list_params.rbi +18 -5
  153. data/rbi/terminal_shop/models/subscription_list_response.rbi +20 -6
  154. data/rbi/terminal_shop/models/subscription_update_params.rbi +81 -42
  155. data/rbi/terminal_shop/models/subscription_update_response.rbi +19 -7
  156. data/rbi/terminal_shop/models/token.rbi +16 -4
  157. data/rbi/terminal_shop/models/token_create_params.rbi +18 -5
  158. data/rbi/terminal_shop/models/token_create_response.rbi +39 -9
  159. data/rbi/terminal_shop/models/token_delete_params.rbi +18 -5
  160. data/rbi/terminal_shop/models/token_delete_response.rbi +13 -3
  161. data/rbi/terminal_shop/models/token_get_params.rbi +15 -5
  162. data/rbi/terminal_shop/models/token_get_response.rbi +17 -7
  163. data/rbi/terminal_shop/models/token_list_params.rbi +15 -5
  164. data/rbi/terminal_shop/models/token_list_response.rbi +18 -6
  165. data/rbi/terminal_shop/models/view_init_params.rbi +15 -5
  166. data/rbi/terminal_shop/models/view_init_response.rbi +72 -47
  167. data/rbi/terminal_shop/request_options.rbi +18 -7
  168. data/rbi/terminal_shop/resources/address.rbi +28 -13
  169. data/rbi/terminal_shop/resources/app.rbi +30 -12
  170. data/rbi/terminal_shop/resources/card.rbi +37 -14
  171. data/rbi/terminal_shop/resources/cart.rbi +45 -16
  172. data/rbi/terminal_shop/resources/email.rbi +9 -4
  173. data/rbi/terminal_shop/resources/order.rbi +21 -10
  174. data/rbi/terminal_shop/resources/product.rbi +16 -6
  175. data/rbi/terminal_shop/resources/profile.rbi +16 -6
  176. data/rbi/terminal_shop/resources/subscription.rbi +43 -27
  177. data/rbi/terminal_shop/resources/token.rbi +30 -11
  178. data/rbi/terminal_shop/resources/view.rbi +9 -3
  179. data/sig/terminal_shop/internal/transport/base_client.rbs +16 -1
  180. data/sig/terminal_shop/internal/transport/pooled_net_requester.rbs +2 -0
  181. data/sig/terminal_shop/internal/type/base_model.rbs +11 -5
  182. data/sig/terminal_shop/internal/type/base_page.rbs +1 -1
  183. data/sig/terminal_shop/internal/type/converter.rbs +2 -0
  184. data/sig/terminal_shop/internal/type/enum.rbs +1 -0
  185. data/sig/terminal_shop/internal/type/request_parameters.rbs +5 -1
  186. data/sig/terminal_shop/internal/type/union.rbs +1 -0
  187. data/sig/terminal_shop/internal/util.rbs +13 -0
  188. data/sig/terminal_shop/internal.rbs +2 -0
  189. data/sig/terminal_shop/models/address.rbs +0 -2
  190. data/sig/terminal_shop/models/address_create_params.rbs +0 -2
  191. data/sig/terminal_shop/models/address_create_response.rbs +0 -2
  192. data/sig/terminal_shop/models/address_delete_params.rbs +0 -2
  193. data/sig/terminal_shop/models/address_delete_response.rbs +0 -2
  194. data/sig/terminal_shop/models/address_get_params.rbs +0 -2
  195. data/sig/terminal_shop/models/address_get_response.rbs +3 -5
  196. data/sig/terminal_shop/models/address_list_params.rbs +0 -2
  197. data/sig/terminal_shop/models/address_list_response.rbs +3 -6
  198. data/sig/terminal_shop/models/app.rbs +0 -2
  199. data/sig/terminal_shop/models/app_create_params.rbs +0 -2
  200. data/sig/terminal_shop/models/app_create_response.rbs +0 -4
  201. data/sig/terminal_shop/models/app_delete_params.rbs +0 -2
  202. data/sig/terminal_shop/models/app_delete_response.rbs +0 -2
  203. data/sig/terminal_shop/models/app_get_params.rbs +0 -2
  204. data/sig/terminal_shop/models/app_get_response.rbs +3 -5
  205. data/sig/terminal_shop/models/app_list_params.rbs +0 -2
  206. data/sig/terminal_shop/models/app_list_response.rbs +3 -5
  207. data/sig/terminal_shop/models/card.rbs +3 -7
  208. data/sig/terminal_shop/models/card_collect_params.rbs +0 -2
  209. data/sig/terminal_shop/models/card_collect_response.rbs +0 -4
  210. data/sig/terminal_shop/models/card_create_params.rbs +0 -2
  211. data/sig/terminal_shop/models/card_create_response.rbs +0 -2
  212. data/sig/terminal_shop/models/card_delete_params.rbs +0 -2
  213. data/sig/terminal_shop/models/card_delete_response.rbs +0 -2
  214. data/sig/terminal_shop/models/card_get_params.rbs +0 -2
  215. data/sig/terminal_shop/models/card_get_response.rbs +3 -5
  216. data/sig/terminal_shop/models/card_list_params.rbs +0 -2
  217. data/sig/terminal_shop/models/card_list_response.rbs +3 -5
  218. data/sig/terminal_shop/models/cart.rbs +11 -19
  219. data/sig/terminal_shop/models/cart_clear_params.rbs +0 -2
  220. data/sig/terminal_shop/models/cart_clear_response.rbs +0 -2
  221. data/sig/terminal_shop/models/cart_convert_params.rbs +0 -2
  222. data/sig/terminal_shop/models/cart_convert_response.rbs +3 -5
  223. data/sig/terminal_shop/models/cart_get_params.rbs +0 -2
  224. data/sig/terminal_shop/models/cart_get_response.rbs +3 -5
  225. data/sig/terminal_shop/models/cart_set_address_params.rbs +0 -2
  226. data/sig/terminal_shop/models/cart_set_address_response.rbs +0 -2
  227. data/sig/terminal_shop/models/cart_set_card_params.rbs +0 -2
  228. data/sig/terminal_shop/models/cart_set_card_response.rbs +0 -2
  229. data/sig/terminal_shop/models/cart_set_item_params.rbs +0 -2
  230. data/sig/terminal_shop/models/cart_set_item_response.rbs +3 -5
  231. data/sig/terminal_shop/models/email_create_params.rbs +0 -2
  232. data/sig/terminal_shop/models/email_create_response.rbs +0 -2
  233. data/sig/terminal_shop/models/order.rbs +18 -28
  234. data/sig/terminal_shop/models/order_create_params.rbs +0 -2
  235. data/sig/terminal_shop/models/order_create_response.rbs +0 -2
  236. data/sig/terminal_shop/models/order_get_params.rbs +0 -2
  237. data/sig/terminal_shop/models/order_get_response.rbs +3 -5
  238. data/sig/terminal_shop/models/order_list_params.rbs +0 -2
  239. data/sig/terminal_shop/models/order_list_response.rbs +3 -5
  240. data/sig/terminal_shop/models/product.rbs +14 -18
  241. data/sig/terminal_shop/models/product_get_params.rbs +0 -2
  242. data/sig/terminal_shop/models/product_get_response.rbs +3 -5
  243. data/sig/terminal_shop/models/product_list_params.rbs +0 -2
  244. data/sig/terminal_shop/models/product_list_response.rbs +3 -6
  245. data/sig/terminal_shop/models/product_variant.rbs +5 -9
  246. data/sig/terminal_shop/models/profile.rbs +3 -7
  247. data/sig/terminal_shop/models/profile_me_params.rbs +0 -2
  248. data/sig/terminal_shop/models/profile_me_response.rbs +3 -5
  249. data/sig/terminal_shop/models/profile_update_params.rbs +0 -2
  250. data/sig/terminal_shop/models/profile_update_response.rbs +3 -5
  251. data/sig/terminal_shop/models/subscription.rbs +8 -14
  252. data/sig/terminal_shop/models/subscription_create_params.rbs +0 -2
  253. data/sig/terminal_shop/models/subscription_create_response.rbs +0 -2
  254. data/sig/terminal_shop/models/subscription_delete_params.rbs +0 -2
  255. data/sig/terminal_shop/models/subscription_delete_response.rbs +0 -2
  256. data/sig/terminal_shop/models/subscription_get_params.rbs +0 -2
  257. data/sig/terminal_shop/models/subscription_get_response.rbs +3 -6
  258. data/sig/terminal_shop/models/subscription_list_params.rbs +0 -2
  259. data/sig/terminal_shop/models/subscription_list_response.rbs +3 -7
  260. data/sig/terminal_shop/models/subscription_update_params.rbs +3 -9
  261. data/sig/terminal_shop/models/subscription_update_response.rbs +3 -6
  262. data/sig/terminal_shop/models/token.rbs +0 -2
  263. data/sig/terminal_shop/models/token_create_params.rbs +0 -2
  264. data/sig/terminal_shop/models/token_create_response.rbs +0 -4
  265. data/sig/terminal_shop/models/token_delete_params.rbs +0 -2
  266. data/sig/terminal_shop/models/token_delete_response.rbs +0 -2
  267. data/sig/terminal_shop/models/token_get_params.rbs +0 -2
  268. data/sig/terminal_shop/models/token_get_response.rbs +3 -5
  269. data/sig/terminal_shop/models/token_list_params.rbs +0 -2
  270. data/sig/terminal_shop/models/token_list_response.rbs +3 -5
  271. data/sig/terminal_shop/models/view_init_params.rbs +0 -2
  272. data/sig/terminal_shop/models/view_init_response.rbs +27 -31
  273. data/sig/terminal_shop/request_options.rbs +1 -1
  274. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d2baf89c820940247a6fcbaf7280e6650071b784336532310bc835ef84af19ac
4
- data.tar.gz: 0d7a226044c4ef501334b7a8307e02232bf82c03365aa7456b76e0eafde61eec
3
+ metadata.gz: ec0b2f09a8009870055d5b2a868a6078adb11504f48eba5eea34b84ff89ba60f
4
+ data.tar.gz: f2e9a51a8c54a1eb7f07f40485b89b93218ba1055a8b0498a11f97caa15d5c71
5
5
  SHA512:
6
- metadata.gz: ed79d30315f5958c0986ecd0bc3ce08b2d7e548ecffa9b6a0eda6a2b1b2c183439650e16f7b42b7f53da77db75eff537e9362948b6c2d831ba7576d0255b080d
7
- data.tar.gz: e21a7d7893fadbcd2ee1484576b51e778205ccdc1fb77c6d419c64f44d18d4be1f991adb1b394473176ad3371e79aae1203a177e9e1e693d93898e6880c6da34
6
+ metadata.gz: 1144da9caada255b1fd2a9856dd8a2d5e6375c0322e369d761289b41c8aa2fe1ba318add613dc0f1cbcd1031badc4576d27084c635921cd063848dbcae5a9ea9
7
+ data.tar.gz: e5271523d7d53bcd460ea32453cab3b764009685b290344dcbc07def5ebe9133dd0e8cf55cb3ea72b2491cfb47488c21cdab21c67c0ca4e9b5add53c266ee185
data/CHANGELOG.md CHANGED
@@ -1,5 +1,39 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0 (2025-05-14)
4
+
5
+ Full Changelog: [v3.6.2...v3.7.0](https://github.com/terminaldotshop/terminal-sdk-ruby/compare/v3.6.2...v3.7.0)
6
+
7
+ ### Features
8
+
9
+ * expose base client options as read only attributes ([5ed1891](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/5ed18915050ee0f2db755deaa6655e93e0e3b766))
10
+ * expose recursive `#to_h` conversion ([ca0cc5f](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/ca0cc5f0001bbb2f5b9c5edd7e4e7a017f268956))
11
+ * support sorbet aliases at the runtime ([9e210bb](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/9e210bb7cb568a0c4b7a10e87e69772d56a0306b))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **internal:** update gemspec name ([47cc74b](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/47cc74b18b522e6caa46b014977c035b144e8faf))
17
+
18
+
19
+ ### Chores
20
+
21
+ * fix misc linting / minor issues ([536f483](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/536f483f7916651ae0ae11f663315c8b379dc619))
22
+ * **internal:** version bump ([cbba1d7](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/cbba1d7501215bf6a55a54d1fcbdaea01da212d6))
23
+
24
+ ## 3.6.2 (2025-05-08)
25
+
26
+ Full Changelog: [v3.6.1...v3.6.2](https://github.com/terminaldotshop/terminal-sdk-ruby/compare/v3.6.1...v3.6.2)
27
+
28
+ ### Bug Fixes
29
+
30
+ * **internal:** ensure formatting always uses c.utf-8 locale ([4a90972](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/4a90972d352696d7c6e895c5c20dbfe3b9f02c11))
31
+
32
+
33
+ ### Chores
34
+
35
+ * **internal:** version bump ([ae3d3c6](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/ae3d3c696dc3332e7b8058ea59dfa33ae77a7305))
36
+
3
37
  ## 3.6.1 (2025-05-06)
4
38
 
5
39
  Full Changelog: [v3.6.0...v3.6.1](https://github.com/terminaldotshop/terminal-sdk-ruby/compare/v3.6.0...v3.6.1)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "terminal-shop", "~> 3.6.1"
20
+ gem "terminal-shop", "~> 3.7.0"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -175,9 +175,9 @@ Sorbet's typed enums require sub-classing of the [`T::Enum` class](https://sorbe
175
175
  Since this library does not depend on `sorbet-runtime`, it uses a [`T.all` intersection type](https://sorbet.org/docs/intersection-types) with a ruby primitive type to construct a "tagged alias" instead.
176
176
 
177
177
  ```ruby
178
- module TerminalShop::Models::Region
178
+ module TerminalShop::Region
179
179
  # This alias aids language service driven navigation.
180
- TaggedSymbol = T.type_alias { T.all(Symbol, TerminalShop::Models::Region) }
180
+ TaggedSymbol = T.type_alias { T.all(Symbol, TerminalShop::Region) }
181
181
  end
182
182
  ```
183
183
 
@@ -99,7 +99,7 @@ module TerminalShop
99
99
  # @param response [nil]
100
100
  # @param message [String, nil]
101
101
  #
102
- # @return [TerminalShop::Errors::APIStatusError]
102
+ # @return [self]
103
103
  def self.for(url:, status:, body:, request:, response:, message: nil)
104
104
  kwargs = {
105
105
  url: url,
@@ -45,9 +45,9 @@ module TerminalShop
45
45
  @filename =
46
46
  case content
47
47
  in Pathname
48
- filename.nil? ? content.basename.to_path : File.basename(filename)
48
+ filename.nil? ? content.basename.to_path : ::File.basename(filename)
49
49
  else
50
- filename.nil? ? nil : File.basename(filename)
50
+ filename.nil? ? nil : ::File.basename(filename)
51
51
  end
52
52
  @content_type = content_type
53
53
  end
@@ -7,6 +7,8 @@ module TerminalShop
7
7
  #
8
8
  # @abstract
9
9
  class BaseClient
10
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
11
+
10
12
  # from whatwg fetch spec
11
13
  MAX_REDIRECTS = 20
12
14
 
@@ -151,6 +153,27 @@ module TerminalShop
151
153
  end
152
154
  end
153
155
 
156
+ # @return [URI::Generic]
157
+ attr_reader :base_url
158
+
159
+ # @return [Float]
160
+ attr_reader :timeout
161
+
162
+ # @return [Integer]
163
+ attr_reader :max_retries
164
+
165
+ # @return [Float]
166
+ attr_reader :initial_retry_delay
167
+
168
+ # @return [Float]
169
+ attr_reader :max_retry_delay
170
+
171
+ # @return [Hash{String=>String}]
172
+ attr_reader :headers
173
+
174
+ # @return [String, nil]
175
+ attr_reader :idempotency_header
176
+
154
177
  # @api private
155
178
  # @return [TerminalShop::Internal::Transport::PooledNetRequester]
156
179
  attr_reader :requester
@@ -182,10 +205,11 @@ module TerminalShop
182
205
  },
183
206
  headers
184
207
  )
185
- @base_url = TerminalShop::Internal::Util.parse_uri(base_url)
208
+ @base_url_components = TerminalShop::Internal::Util.parse_uri(base_url)
209
+ @base_url = TerminalShop::Internal::Util.unparse_uri(@base_url_components)
186
210
  @idempotency_header = idempotency_header&.to_s&.downcase
187
- @max_retries = max_retries
188
211
  @timeout = timeout
212
+ @max_retries = max_retries
189
213
  @initial_retry_delay = initial_retry_delay
190
214
  @max_retry_delay = max_retry_delay
191
215
  end
@@ -276,10 +300,14 @@ module TerminalShop
276
300
  TerminalShop::Internal::Util.deep_merge(*[req[:body], opts[:extra_body]].compact)
277
301
  end
278
302
 
303
+ url = TerminalShop::Internal::Util.join_parsed_uri(
304
+ @base_url_components,
305
+ {**req, path: path, query: query}
306
+ )
279
307
  headers, encoded = TerminalShop::Internal::Util.encode_content(headers, body)
280
308
  {
281
309
  method: method,
282
- url: TerminalShop::Internal::Util.join_parsed_uri(@base_url, {**req, path: path, query: query}),
310
+ url: url,
283
311
  headers: headers,
284
312
  body: encoded,
285
313
  max_retries: opts.fetch(:max_retries, @max_retries),
@@ -476,10 +504,54 @@ module TerminalShop
476
504
  # @return [String]
477
505
  def inspect
478
506
  # rubocop:disable Layout/LineLength
479
- base_url = TerminalShop::Internal::Util.unparse_uri(@base_url)
480
- "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
507
+ "#<#{self.class.name}:0x#{object_id.to_s(16)} base_url=#{@base_url} max_retries=#{@max_retries} timeout=#{@timeout}>"
481
508
  # rubocop:enable Layout/LineLength
482
509
  end
510
+
511
+ define_sorbet_constant!(:RequestComponents) do
512
+ T.type_alias do
513
+ {
514
+ method: Symbol,
515
+ path: T.any(String, T::Array[String]),
516
+ query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
517
+ headers: T.nilable(
518
+ T::Hash[String,
519
+ T.nilable(
520
+ T.any(
521
+ String,
522
+ Integer,
523
+ T::Array[T.nilable(T.any(String, Integer))]
524
+ )
525
+ )]
526
+ ),
527
+ body: T.nilable(T.anything),
528
+ unwrap: T.nilable(
529
+ T.any(
530
+ Symbol,
531
+ Integer,
532
+ T::Array[T.any(Symbol, Integer)],
533
+ T.proc.params(arg0: T.anything).returns(T.anything)
534
+ )
535
+ ),
536
+ page: T.nilable(T::Class[TerminalShop::Internal::Type::BasePage[TerminalShop::Internal::Type::BaseModel]]),
537
+ stream: T.nilable(T::Class[T.anything]),
538
+ model: T.nilable(TerminalShop::Internal::Type::Converter::Input),
539
+ options: T.nilable(TerminalShop::RequestOptions::OrHash)
540
+ }
541
+ end
542
+ end
543
+ define_sorbet_constant!(:RequestInput) do
544
+ T.type_alias do
545
+ {
546
+ method: Symbol,
547
+ url: URI::Generic,
548
+ headers: T::Hash[String, String],
549
+ body: T.anything,
550
+ max_retries: Integer,
551
+ timeout: Float
552
+ }
553
+ end
554
+ end
483
555
  end
484
556
  end
485
557
  end
@@ -5,6 +5,8 @@ module TerminalShop
5
5
  module Transport
6
6
  # @api private
7
7
  class PooledNetRequester
8
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  # from the golang stdlib
9
11
  # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
10
12
  KEEP_ALIVE_TIMEOUT = 30
@@ -187,6 +189,18 @@ module TerminalShop
187
189
  @size = size
188
190
  @pools = {}
189
191
  end
192
+
193
+ define_sorbet_constant!(:Request) do
194
+ T.type_alias do
195
+ {
196
+ method: Symbol,
197
+ url: URI::Generic,
198
+ headers: T::Hash[String, String],
199
+ body: T.anything,
200
+ deadline: Float
201
+ }
202
+ end
203
+ end
190
204
  end
191
205
  end
192
206
  end
@@ -29,7 +29,7 @@ module TerminalShop
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
31
  #
32
- # @return [TerminalShop::Internal::Type::ArrayOf]
32
+ # @return [self]
33
33
  def self.[](...) = new(...)
34
34
 
35
35
  # @api public
@@ -6,6 +6,7 @@ module TerminalShop
6
6
  # @abstract
7
7
  class BaseModel
8
8
  extend TerminalShop::Internal::Type::Converter
9
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
9
10
 
10
11
  class << self
11
12
  # @api private
@@ -13,11 +14,17 @@ module TerminalShop
13
14
  # Assumes superclass fields are totally defined before fields are accessed /
14
15
  # defined on subclasses.
15
16
  #
16
- # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
17
- def known_fields
18
- @known_fields ||= (self < TerminalShop::Internal::Type::BaseModel ? superclass.known_fields.dup : {})
17
+ # @param child [Class<TerminalShop::Internal::Type::BaseModel>]
18
+ def inherited(child)
19
+ super
20
+ child.known_fields.replace(known_fields.dup)
19
21
  end
20
22
 
23
+ # @api private
24
+ #
25
+ # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
26
+ def known_fields = @known_fields ||= {}
27
+
21
28
  # @api private
22
29
  #
23
30
  # @return [Hash{Symbol=>Hash{Symbol=>Object}}]
@@ -204,7 +211,7 @@ module TerminalShop
204
211
  #
205
212
  # @option state [Integer] :branched
206
213
  #
207
- # @return [TerminalShop::Internal::Type::BaseModel, Object]
214
+ # @return [self, Object]
208
215
  def coerce(value, state:)
209
216
  exactness = state.fetch(:exactness)
210
217
 
@@ -263,7 +270,7 @@ module TerminalShop
263
270
 
264
271
  # @api private
265
272
  #
266
- # @param value [TerminalShop::Internal::Type::BaseModel, Object]
273
+ # @param value [self, Object]
267
274
  #
268
275
  # @param state [Hash{Symbol=>Object}] .
269
276
  #
@@ -304,6 +311,39 @@ module TerminalShop
304
311
  end
305
312
  end
306
313
 
314
+ class << self
315
+ # @api private
316
+ #
317
+ # @param model [TerminalShop::Internal::Type::BaseModel]
318
+ # @param convert [Boolean]
319
+ #
320
+ # @return [Hash{Symbol=>Object}]
321
+ def recursively_to_h(model, convert:)
322
+ rec = ->(x) do
323
+ case x
324
+ in TerminalShop::Internal::Type::BaseModel
325
+ if convert
326
+ fields = x.class.known_fields
327
+ x.to_h.to_h do |key, val|
328
+ [key, rec.call(fields.key?(key) ? x.public_send(key) : val)]
329
+ rescue TerminalShop::Errors::ConversionError
330
+ [key, rec.call(val)]
331
+ end
332
+ else
333
+ rec.call(x.to_h)
334
+ end
335
+ in Hash
336
+ x.transform_values(&rec)
337
+ in Array
338
+ x.map(&rec)
339
+ else
340
+ x
341
+ end
342
+ end
343
+ rec.call(model)
344
+ end
345
+ end
346
+
307
347
  # @api public
308
348
  #
309
349
  # Returns the raw value associated with the given key, if found. Otherwise, nil is
@@ -340,6 +380,14 @@ module TerminalShop
340
380
 
341
381
  alias_method :to_hash, :to_h
342
382
 
383
+ # @api public
384
+ #
385
+ # In addition to the behaviour of `#to_h`, this method will recursively call
386
+ # `#to_h` on nested models.
387
+ #
388
+ # @return [Hash{Symbol=>Object}]
389
+ def deep_to_h = self.class.recursively_to_h(@data, convert: false)
390
+
343
391
  # @param keys [Array<Symbol>, nil]
344
392
  #
345
393
  # @return [Hash{Symbol=>Object}]
@@ -355,29 +403,6 @@ module TerminalShop
355
403
  .to_h
356
404
  end
357
405
 
358
- class << self
359
- # @api private
360
- #
361
- # @param model [TerminalShop::Internal::Type::BaseModel]
362
- #
363
- # @return [Hash{Symbol=>Object}]
364
- def walk(model)
365
- walk = ->(x) do
366
- case x
367
- in TerminalShop::Internal::Type::BaseModel
368
- walk.call(x.to_h)
369
- in Hash
370
- x.transform_values(&walk)
371
- in Array
372
- x.map(&walk)
373
- else
374
- x
375
- end
376
- end
377
- walk.call(model)
378
- end
379
- end
380
-
381
406
  # @api public
382
407
  #
383
408
  # @param a [Object]
@@ -423,12 +448,19 @@ module TerminalShop
423
448
  # @api public
424
449
  #
425
450
  # @return [String]
426
- def to_s = self.class.walk(@data).to_s
451
+ def to_s = deep_to_h.to_s
427
452
 
428
453
  # @api private
429
454
  #
430
455
  # @return [String]
431
- def inspect = "#<#{self.class}:0x#{object_id.to_s(16)} #{self}>"
456
+ def inspect
457
+ converted = self.class.recursively_to_h(self, convert: true)
458
+ "#<#{self.class}:0x#{object_id.to_s(16)} #{converted}>"
459
+ end
460
+
461
+ define_sorbet_constant!(:KnownField) do
462
+ T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
463
+ end
432
464
  end
433
465
  end
434
466
  end
@@ -5,6 +5,8 @@ module TerminalShop
5
5
  module Type
6
6
  # @api private
7
7
  module Converter
8
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
9
+
8
10
  # rubocop:disable Lint/UnusedMethodArgument
9
11
 
10
12
  # @api private
@@ -268,6 +270,22 @@ module TerminalShop
268
270
  end
269
271
  end
270
272
  end
273
+
274
+ define_sorbet_constant!(:Input) do
275
+ T.type_alias { T.any(TerminalShop::Internal::Type::Converter, T::Class[T.anything]) }
276
+ end
277
+ define_sorbet_constant!(:CoerceState) do
278
+ T.type_alias do
279
+ {
280
+ strictness: T.any(T::Boolean, Symbol),
281
+ exactness: {yes: Integer, no: Integer, maybe: Integer},
282
+ branched: Integer
283
+ }
284
+ end
285
+ end
286
+ define_sorbet_constant!(:DumpState) do
287
+ T.type_alias { {can_retry: T::Boolean} }
288
+ end
271
289
  end
272
290
  end
273
291
  end
@@ -17,13 +17,13 @@ module TerminalShop
17
17
  # values safely.
18
18
  #
19
19
  # @example
20
- # # `region` is a `TerminalShop::Models::Region`
20
+ # # `region` is a `TerminalShop::Region`
21
21
  # case region
22
- # when TerminalShop::Models::Region::EU
22
+ # when TerminalShop::Region::EU
23
23
  # # ...
24
- # when TerminalShop::Models::Region::NA
24
+ # when TerminalShop::Region::NA
25
25
  # # ...
26
- # when TerminalShop::Models::Region::GLOBAL
26
+ # when TerminalShop::Region::GLOBAL
27
27
  # # ...
28
28
  # else
29
29
  # puts(region)
@@ -42,6 +42,7 @@ module TerminalShop
42
42
  # end
43
43
  module Enum
44
44
  include TerminalShop::Internal::Type::Converter
45
+ include TerminalShop::Internal::Util::SorbetRuntimeSupport
45
46
 
46
47
  # All of the valid Symbol values for this enum.
47
48
  #
@@ -29,7 +29,7 @@ module TerminalShop
29
29
  #
30
30
  # @option spec [Boolean] :"nil?"
31
31
  #
32
- # @return [TerminalShop::Internal::Type::HashOf]
32
+ # @return [self]
33
33
  def self.[](...) = new(...)
34
34
 
35
35
  # @api public
@@ -5,10 +5,10 @@ module TerminalShop
5
5
  module Type
6
6
  # @api private
7
7
  module RequestParameters
8
- # @!parse
9
- # # Options to specify HTTP behaviour for this request.
10
- # # @return [TerminalShop::RequestOptions, Hash{Symbol=>Object}]
11
- # attr_accessor :request_options
8
+ # @!attribute request_options
9
+ # Options to specify HTTP behaviour for this request.
10
+ #
11
+ # @return [TerminalShop::RequestOptions, Hash{Symbol=>Object}]
12
12
 
13
13
  # @param mod [Module]
14
14
  def self.included(mod)
@@ -6,6 +6,7 @@ module TerminalShop
6
6
  # @api private
7
7
  module Union
8
8
  include TerminalShop::Internal::Type::Converter
9
+ include TerminalShop::Internal::Util::SorbetRuntimeSupport
9
10
 
10
11
  # @api private
11
12
  #
@@ -535,7 +535,7 @@ module TerminalShop
535
535
  filename = ERB::Util.url_encode(val.filename)
536
536
  y << "; filename=\"#{filename}\""
537
537
  in Pathname | IO
538
- filename = ERB::Util.url_encode(File.basename(val.to_path))
538
+ filename = ERB::Util.url_encode(::File.basename(val.to_path))
539
539
  y << "; filename=\"#{filename}\""
540
540
  else
541
541
  end
@@ -801,6 +801,62 @@ module TerminalShop
801
801
  end
802
802
  end
803
803
  end
804
+
805
+ # @api private
806
+ module SorbetRuntimeSupport
807
+ class MissingSorbetRuntimeError < ::RuntimeError
808
+ end
809
+
810
+ # @api private
811
+ #
812
+ # @return [Hash{Symbol=>Object}]
813
+ private def sorbet_runtime_constants = @sorbet_runtime_constants ||= {}
814
+
815
+ # @api private
816
+ #
817
+ # @param name [Symbol]
818
+ def const_missing(name)
819
+ super unless sorbet_runtime_constants.key?(name)
820
+
821
+ unless Object.const_defined?(:T)
822
+ message = "Trying to access a Sorbet constant #{name.inspect} without `sorbet-runtime`."
823
+ raise MissingSorbetRuntimeError.new(message)
824
+ end
825
+
826
+ sorbet_runtime_constants.fetch(name).call
827
+ end
828
+
829
+ # @api private
830
+ #
831
+ # @param name [Symbol]
832
+ # @param blk [Proc]
833
+ def define_sorbet_constant!(name, &blk) = sorbet_runtime_constants.store(name, blk)
834
+ end
835
+
836
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
837
+
838
+ define_sorbet_constant!(:ParsedUri) do
839
+ T.type_alias do
840
+ {
841
+ scheme: T.nilable(String),
842
+ host: T.nilable(String),
843
+ port: T.nilable(Integer),
844
+ path: T.nilable(String),
845
+ query: T::Hash[String, T::Array[String]]
846
+ }
847
+ end
848
+ end
849
+
850
+ define_sorbet_constant!(:ServerSentEvent) do
851
+ T.type_alias do
852
+ {
853
+ event: T.nilable(String),
854
+ data: T.nilable(String),
855
+ id: T.nilable(String),
856
+ retry: T.nilable(Integer)
857
+ }
858
+ end
859
+ end
804
860
  end
805
861
  end
806
862
  end
@@ -2,10 +2,16 @@
2
2
 
3
3
  module TerminalShop
4
4
  module Internal
5
+ extend TerminalShop::Internal::Util::SorbetRuntimeSupport
6
+
5
7
  OMIT =
6
8
  Object.new.tap do
7
9
  _1.define_singleton_method(:inspect) { "#<#{TerminalShop::Internal}::OMIT>" }
8
10
  end
9
11
  .freeze
12
+
13
+ define_sorbet_constant!(:AnyHash) do
14
+ T.type_alias { T::Hash[Symbol, T.anything] }
15
+ end
10
16
  end
11
17
  end
@@ -64,12 +64,12 @@ module TerminalShop
64
64
  optional :street2, String
65
65
 
66
66
  # @!method initialize(id:, city:, country:, created:, name:, street1:, zip:, phone: nil, province: nil, street2: nil)
67
- # Some parameter documentations has been truncated, see
68
- # {TerminalShop::Models::AddressAPI} for more details.
67
+ # Some parameter documentations has been truncated, see {TerminalShop::AddressAPI}
68
+ # for more details.
69
69
  #
70
70
  # Physical address associated with a Terminal shop user.
71
71
  #
72
- # @param id [String] Unique object identifier. ...
72
+ # @param id [String] Unique object identifier.
73
73
  #
74
74
  # @param city [String] City of the address.
75
75
  #
@@ -7,11 +7,11 @@ module TerminalShop
7
7
  # @!attribute data
8
8
  # Physical address associated with a Terminal shop user.
9
9
  #
10
- # @return [TerminalShop::Models::AddressAPI]
11
- required :data, -> { TerminalShop::Models::AddressAPI }
10
+ # @return [TerminalShop::AddressAPI]
11
+ required :data, -> { TerminalShop::AddressAPI }
12
12
 
13
13
  # @!method initialize(data:)
14
- # @param data [TerminalShop::Models::AddressAPI] Physical address associated with a Terminal shop user.
14
+ # @param data [TerminalShop::AddressAPI] Physical address associated with a Terminal shop user.
15
15
  end
16
16
  end
17
17
  end
@@ -7,11 +7,11 @@ module TerminalShop
7
7
  # @!attribute data
8
8
  # Shipping addresses.
9
9
  #
10
- # @return [Array<TerminalShop::Models::AddressAPI>]
11
- required :data, -> { TerminalShop::Internal::Type::ArrayOf[TerminalShop::Models::AddressAPI] }
10
+ # @return [Array<TerminalShop::AddressAPI>]
11
+ required :data, -> { TerminalShop::Internal::Type::ArrayOf[TerminalShop::AddressAPI] }
12
12
 
13
13
  # @!method initialize(data:)
14
- # @param data [Array<TerminalShop::Models::AddressAPI>] Shipping addresses.
14
+ # @param data [Array<TerminalShop::AddressAPI>] Shipping addresses.
15
15
  end
16
16
  end
17
17
  end
@@ -28,12 +28,12 @@ module TerminalShop
28
28
  required :secret, String
29
29
 
30
30
  # @!method initialize(id:, name:, redirect_uri:, secret:)
31
- # Some parameter documentations has been truncated, see
32
- # {TerminalShop::Models::AppAPI} for more details.
31
+ # Some parameter documentations has been truncated, see {TerminalShop::AppAPI} for
32
+ # more details.
33
33
  #
34
34
  # A Terminal App used for configuring an OAuth 2.0 client.
35
35
  #
36
- # @param id [String] Unique object identifier. ...
36
+ # @param id [String] Unique object identifier.
37
37
  #
38
38
  # @param name [String] Name of the app.
39
39
  #
@@ -7,11 +7,11 @@ module TerminalShop
7
7
  # @!attribute data
8
8
  # A Terminal App used for configuring an OAuth 2.0 client.
9
9
  #
10
- # @return [TerminalShop::Models::AppAPI]
11
- required :data, -> { TerminalShop::Models::AppAPI }
10
+ # @return [TerminalShop::AppAPI]
11
+ required :data, -> { TerminalShop::AppAPI }
12
12
 
13
13
  # @!method initialize(data:)
14
- # @param data [TerminalShop::Models::AppAPI] A Terminal App used for configuring an OAuth 2.0 client.
14
+ # @param data [TerminalShop::AppAPI] A Terminal App used for configuring an OAuth 2.0 client.
15
15
  end
16
16
  end
17
17
  end