terminal-shop 2.1.3 → 3.5.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 (534) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +674 -0
  4. data/README.md +86 -26
  5. data/SECURITY.md +27 -0
  6. data/lib/{terminal-shop → terminal_shop}/client.rb +19 -24
  7. data/lib/terminal_shop/errors.rb +192 -0
  8. data/lib/terminal_shop/file_part.rb +55 -0
  9. data/lib/terminal_shop/internal/transport/base_client.rb +486 -0
  10. data/lib/terminal_shop/internal/transport/pooled_net_requester.rb +193 -0
  11. data/lib/terminal_shop/internal/type/array_of.rb +154 -0
  12. data/lib/terminal_shop/internal/type/base_model.rb +443 -0
  13. data/lib/terminal_shop/internal/type/base_page.rb +55 -0
  14. data/lib/terminal_shop/internal/type/boolean.rb +64 -0
  15. data/lib/terminal_shop/internal/type/converter.rb +274 -0
  16. data/lib/terminal_shop/internal/type/enum.rb +133 -0
  17. data/lib/terminal_shop/internal/type/file_input.rb +96 -0
  18. data/lib/terminal_shop/internal/type/hash_of.rb +174 -0
  19. data/lib/terminal_shop/internal/type/request_parameters.rb +48 -0
  20. data/lib/terminal_shop/internal/type/union.rb +220 -0
  21. data/lib/terminal_shop/internal/type/unknown.rb +68 -0
  22. data/lib/terminal_shop/internal/util.rb +790 -0
  23. data/lib/terminal_shop/internal.rb +11 -0
  24. data/lib/terminal_shop/models/address.rb +93 -0
  25. data/lib/terminal_shop/models/address_create_params.rb +78 -0
  26. data/lib/terminal_shop/models/address_create_response.rb +17 -0
  27. data/lib/terminal_shop/models/address_delete_params.rb +14 -0
  28. data/lib/terminal_shop/models/address_delete_response.rb +16 -0
  29. data/lib/terminal_shop/models/address_get_params.rb +14 -0
  30. data/lib/{terminal-shop → terminal_shop}/models/address_get_response.rb +4 -7
  31. data/lib/terminal_shop/models/address_list_params.rb +14 -0
  32. data/lib/terminal_shop/models/address_list_response.rb +17 -0
  33. data/lib/{terminal-shop → terminal_shop}/models/app.rb +14 -12
  34. data/lib/terminal_shop/models/app_create_params.rb +26 -0
  35. data/lib/{terminal-shop → terminal_shop}/models/app_create_response.rb +10 -15
  36. data/lib/terminal_shop/models/app_delete_params.rb +14 -0
  37. data/lib/terminal_shop/models/app_delete_response.rb +16 -0
  38. data/lib/terminal_shop/models/app_get_params.rb +14 -0
  39. data/lib/{terminal-shop → terminal_shop}/models/app_get_response.rb +4 -7
  40. data/lib/terminal_shop/models/app_list_params.rb +14 -0
  41. data/lib/terminal_shop/models/app_list_response.rb +17 -0
  42. data/lib/terminal_shop/models/card.rb +75 -0
  43. data/lib/terminal_shop/models/card_collect_params.rb +14 -0
  44. data/lib/terminal_shop/models/card_collect_response.rb +36 -0
  45. data/lib/terminal_shop/models/card_create_params.rb +27 -0
  46. data/lib/terminal_shop/models/card_create_response.rb +17 -0
  47. data/lib/terminal_shop/models/card_delete_params.rb +14 -0
  48. data/lib/terminal_shop/models/card_delete_response.rb +16 -0
  49. data/lib/terminal_shop/models/card_get_params.rb +14 -0
  50. data/lib/{terminal-shop → terminal_shop}/models/card_get_response.rb +4 -7
  51. data/lib/terminal_shop/models/card_list_params.rb +14 -0
  52. data/lib/terminal_shop/models/card_list_response.rb +17 -0
  53. data/lib/terminal_shop/models/cart.rb +150 -0
  54. data/lib/terminal_shop/models/cart_clear_params.rb +14 -0
  55. data/lib/terminal_shop/models/cart_clear_response.rb +16 -0
  56. data/lib/terminal_shop/models/cart_convert_params.rb +14 -0
  57. data/lib/{terminal-shop → terminal_shop}/models/cart_convert_response.rb +4 -7
  58. data/lib/terminal_shop/models/cart_get_params.rb +14 -0
  59. data/lib/{terminal-shop → terminal_shop}/models/cart_get_response.rb +4 -7
  60. data/lib/terminal_shop/models/cart_set_address_params.rb +22 -0
  61. data/lib/terminal_shop/models/cart_set_address_response.rb +16 -0
  62. data/lib/terminal_shop/models/cart_set_card_params.rb +22 -0
  63. data/lib/terminal_shop/models/cart_set_card_response.rb +16 -0
  64. data/lib/terminal_shop/models/cart_set_item_params.rb +30 -0
  65. data/lib/{terminal-shop → terminal_shop}/models/cart_set_item_response.rb +4 -7
  66. data/lib/terminal_shop/models/email_create_params.rb +22 -0
  67. data/lib/terminal_shop/models/email_create_response.rb +16 -0
  68. data/lib/terminal_shop/models/order.rb +278 -0
  69. data/lib/terminal_shop/models/order_create_params.rb +38 -0
  70. data/lib/terminal_shop/models/order_create_response.rb +17 -0
  71. data/lib/terminal_shop/models/order_get_params.rb +14 -0
  72. data/lib/{terminal-shop → terminal_shop}/models/order_get_response.rb +4 -7
  73. data/lib/terminal_shop/models/order_list_params.rb +14 -0
  74. data/lib/terminal_shop/models/order_list_response.rb +17 -0
  75. data/lib/terminal_shop/models/product.rb +125 -0
  76. data/lib/terminal_shop/models/product_get_params.rb +14 -0
  77. data/lib/{terminal-shop → terminal_shop}/models/product_get_response.rb +4 -7
  78. data/lib/terminal_shop/models/product_list_params.rb +14 -0
  79. data/lib/terminal_shop/models/product_list_response.rb +17 -0
  80. data/lib/terminal_shop/models/product_variant.rb +84 -0
  81. data/lib/{terminal-shop → terminal_shop}/models/profile.rb +22 -22
  82. data/lib/terminal_shop/models/profile_me_params.rb +14 -0
  83. data/lib/{terminal-shop → terminal_shop}/models/profile_me_response.rb +4 -7
  84. data/lib/terminal_shop/models/profile_update_params.rb +26 -0
  85. data/lib/{terminal-shop → terminal_shop}/models/profile_update_response.rb +4 -7
  86. data/lib/{terminal-shop → terminal_shop}/models/region.rb +4 -6
  87. data/lib/terminal_shop/models/subscription.rb +125 -0
  88. data/lib/terminal_shop/models/subscription_create_params.rb +14 -0
  89. data/lib/terminal_shop/models/subscription_create_response.rb +16 -0
  90. data/lib/terminal_shop/models/subscription_delete_params.rb +14 -0
  91. data/lib/terminal_shop/models/subscription_delete_response.rb +16 -0
  92. data/lib/terminal_shop/models/subscription_get_params.rb +14 -0
  93. data/lib/{terminal-shop → terminal_shop}/models/subscription_get_response.rb +4 -7
  94. data/lib/terminal_shop/models/subscription_list_params.rb +14 -0
  95. data/lib/terminal_shop/models/subscription_list_response.rb +17 -0
  96. data/lib/terminal_shop/models/subscription_update_params.rb +76 -0
  97. data/lib/terminal_shop/models/subscription_update_response.rb +17 -0
  98. data/lib/terminal_shop/models/token.rb +38 -0
  99. data/lib/terminal_shop/models/token_create_params.rb +14 -0
  100. data/lib/terminal_shop/models/token_create_response.rb +41 -0
  101. data/lib/terminal_shop/models/token_delete_params.rb +14 -0
  102. data/lib/terminal_shop/models/token_delete_response.rb +16 -0
  103. data/lib/terminal_shop/models/token_get_params.rb +14 -0
  104. data/lib/terminal_shop/models/token_get_response.rb +22 -0
  105. data/lib/terminal_shop/models/token_list_params.rb +14 -0
  106. data/lib/terminal_shop/models/token_list_response.rb +17 -0
  107. data/lib/terminal_shop/models/view_init_params.rb +14 -0
  108. data/lib/terminal_shop/models/view_init_response.rb +97 -0
  109. data/lib/{terminal-shop → terminal_shop}/request_options.rb +14 -15
  110. data/lib/{terminal-shop → terminal_shop}/resources/address.rb +28 -18
  111. data/lib/{terminal-shop → terminal_shop}/resources/app.rb +22 -14
  112. data/lib/{terminal-shop → terminal_shop}/resources/card.rb +30 -15
  113. data/lib/{terminal-shop → terminal_shop}/resources/cart.rb +30 -16
  114. data/lib/{terminal-shop → terminal_shop}/resources/email.rb +7 -3
  115. data/lib/{terminal-shop → terminal_shop}/resources/order.rb +18 -10
  116. data/lib/{terminal-shop → terminal_shop}/resources/product.rb +11 -5
  117. data/lib/{terminal-shop → terminal_shop}/resources/profile.rb +12 -8
  118. data/lib/terminal_shop/resources/subscription.rb +141 -0
  119. data/lib/{terminal-shop → terminal_shop}/resources/token.rb +20 -10
  120. data/lib/{terminal-shop → terminal_shop}/resources/view.rb +7 -3
  121. data/lib/{terminal-shop → terminal_shop}/version.rb +1 -1
  122. data/lib/terminal_shop.rb +144 -0
  123. data/rbi/lib/{terminal-shop → terminal_shop}/client.rbi +18 -19
  124. data/rbi/lib/terminal_shop/errors.rbi +143 -0
  125. data/rbi/lib/terminal_shop/file_part.rbi +34 -0
  126. data/rbi/lib/terminal_shop/internal/transport/base_client.rbi +213 -0
  127. data/rbi/lib/terminal_shop/internal/transport/pooled_net_requester.rbi +60 -0
  128. data/rbi/lib/terminal_shop/internal/type/array_of.rbi +88 -0
  129. data/rbi/lib/terminal_shop/internal/type/base_model.rbi +220 -0
  130. data/rbi/lib/terminal_shop/internal/type/base_page.rbi +38 -0
  131. data/rbi/lib/terminal_shop/internal/type/boolean.rbi +48 -0
  132. data/rbi/lib/terminal_shop/internal/type/converter.rbi +120 -0
  133. data/rbi/lib/terminal_shop/internal/type/enum.rbi +66 -0
  134. data/rbi/lib/terminal_shop/internal/type/file_input.rbi +50 -0
  135. data/rbi/lib/terminal_shop/internal/type/hash_of.rbi +88 -0
  136. data/rbi/lib/terminal_shop/internal/type/request_parameters.rbi +21 -0
  137. data/rbi/lib/terminal_shop/internal/type/union.rbi +80 -0
  138. data/rbi/lib/terminal_shop/internal/type/unknown.rbi +40 -0
  139. data/rbi/lib/terminal_shop/internal/util.rbi +302 -0
  140. data/rbi/lib/terminal_shop/internal.rbi +11 -0
  141. data/rbi/lib/{terminal-shop → terminal_shop}/models/address.rbi +30 -6
  142. data/rbi/lib/{terminal-shop → terminal_shop}/models/address_create_params.rbi +14 -9
  143. data/rbi/lib/{terminal-shop → terminal_shop}/models/address_create_response.rbi +6 -6
  144. data/rbi/lib/terminal_shop/models/address_delete_params.rbi +19 -0
  145. data/rbi/lib/{terminal-shop → terminal_shop}/models/address_delete_response.rbi +3 -5
  146. data/rbi/lib/terminal_shop/models/address_get_params.rbi +19 -0
  147. data/rbi/lib/{terminal-shop → terminal_shop}/models/address_get_response.rbi +8 -8
  148. data/rbi/lib/terminal_shop/models/address_list_params.rbi +19 -0
  149. data/rbi/lib/{terminal-shop → terminal_shop}/models/address_list_response.rbi +7 -7
  150. data/rbi/lib/{terminal-shop → terminal_shop}/models/app.rbi +12 -6
  151. data/rbi/lib/{terminal-shop → terminal_shop}/models/app_create_params.rbi +6 -8
  152. data/rbi/lib/{terminal-shop → terminal_shop}/models/app_create_response.rbi +13 -13
  153. data/rbi/lib/terminal_shop/models/app_delete_params.rbi +19 -0
  154. data/rbi/lib/{terminal-shop → terminal_shop}/models/app_delete_response.rbi +3 -5
  155. data/rbi/lib/terminal_shop/models/app_get_params.rbi +19 -0
  156. data/rbi/lib/terminal_shop/models/app_get_response.rbi +25 -0
  157. data/rbi/lib/terminal_shop/models/app_list_params.rbi +19 -0
  158. data/rbi/lib/{terminal-shop → terminal_shop}/models/app_list_response.rbi +7 -7
  159. data/rbi/lib/{terminal-shop → terminal_shop}/models/card.rbi +32 -15
  160. data/rbi/lib/terminal_shop/models/card_collect_params.rbi +19 -0
  161. data/rbi/lib/{terminal-shop → terminal_shop}/models/card_collect_response.rbi +16 -15
  162. data/rbi/lib/terminal_shop/models/card_create_params.rbi +31 -0
  163. data/rbi/lib/{terminal-shop → terminal_shop}/models/card_create_response.rbi +6 -6
  164. data/rbi/lib/terminal_shop/models/card_delete_params.rbi +19 -0
  165. data/rbi/lib/{terminal-shop → terminal_shop}/models/card_delete_response.rbi +3 -5
  166. data/rbi/lib/terminal_shop/models/card_get_params.rbi +19 -0
  167. data/rbi/lib/terminal_shop/models/card_get_response.rbi +25 -0
  168. data/rbi/lib/terminal_shop/models/card_list_params.rbi +19 -0
  169. data/rbi/lib/{terminal-shop → terminal_shop}/models/card_list_response.rbi +7 -7
  170. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart.rbi +51 -29
  171. data/rbi/lib/terminal_shop/models/cart_clear_params.rbi +19 -0
  172. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart_clear_response.rbi +3 -5
  173. data/rbi/lib/terminal_shop/models/cart_convert_params.rbi +19 -0
  174. data/rbi/lib/terminal_shop/models/cart_convert_response.rbi +25 -0
  175. data/rbi/lib/terminal_shop/models/cart_get_params.rbi +19 -0
  176. data/rbi/lib/terminal_shop/models/cart_get_response.rbi +25 -0
  177. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart_set_address_params.rbi +10 -9
  178. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart_set_address_response.rbi +3 -5
  179. data/rbi/lib/terminal_shop/models/cart_set_card_params.rbi +29 -0
  180. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart_set_card_response.rbi +3 -5
  181. data/rbi/lib/{terminal-shop → terminal_shop}/models/cart_set_item_params.rbi +12 -9
  182. data/rbi/lib/terminal_shop/models/cart_set_item_response.rbi +25 -0
  183. data/rbi/lib/terminal_shop/models/email_create_params.rbi +29 -0
  184. data/rbi/lib/{terminal-shop → terminal_shop}/models/email_create_response.rbi +3 -5
  185. data/rbi/lib/{terminal-shop → terminal_shop}/models/order.rbi +149 -36
  186. data/rbi/lib/{terminal-shop → terminal_shop}/models/order_create_params.rbi +14 -9
  187. data/rbi/lib/{terminal-shop → terminal_shop}/models/order_create_response.rbi +6 -6
  188. data/rbi/lib/terminal_shop/models/order_get_params.rbi +19 -0
  189. data/rbi/lib/terminal_shop/models/order_get_response.rbi +25 -0
  190. data/rbi/lib/terminal_shop/models/order_list_params.rbi +19 -0
  191. data/rbi/lib/{terminal-shop → terminal_shop}/models/order_list_response.rbi +7 -7
  192. data/rbi/lib/{terminal-shop → terminal_shop}/models/product.rbi +44 -24
  193. data/rbi/lib/terminal_shop/models/product_get_params.rbi +19 -0
  194. data/rbi/lib/{terminal-shop → terminal_shop}/models/product_get_response.rbi +8 -8
  195. data/rbi/lib/terminal_shop/models/product_list_params.rbi +19 -0
  196. data/rbi/lib/{terminal-shop → terminal_shop}/models/product_list_response.rbi +7 -7
  197. data/rbi/lib/terminal_shop/models/product_variant.rbi +109 -0
  198. data/rbi/lib/{terminal-shop → terminal_shop}/models/profile.rbi +22 -14
  199. data/rbi/lib/terminal_shop/models/profile_me_params.rbi +19 -0
  200. data/rbi/lib/{terminal-shop → terminal_shop}/models/profile_me_response.rbi +8 -8
  201. data/rbi/lib/{terminal-shop → terminal_shop}/models/profile_update_params.rbi +6 -8
  202. data/rbi/lib/{terminal-shop → terminal_shop}/models/profile_update_response.rbi +8 -8
  203. data/rbi/lib/{terminal-shop → terminal_shop}/models/region.rbi +4 -4
  204. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription.rbi +44 -21
  205. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription_create_params.rbi +5 -7
  206. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription_create_response.rbi +3 -5
  207. data/rbi/lib/terminal_shop/models/subscription_delete_params.rbi +19 -0
  208. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription_delete_response.rbi +3 -5
  209. data/rbi/lib/terminal_shop/models/subscription_get_params.rbi +19 -0
  210. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription_get_response.rbi +8 -8
  211. data/rbi/lib/terminal_shop/models/subscription_list_params.rbi +19 -0
  212. data/rbi/lib/{terminal-shop → terminal_shop}/models/subscription_list_response.rbi +7 -7
  213. data/rbi/lib/terminal_shop/models/subscription_update_params.rbi +125 -0
  214. data/rbi/lib/terminal_shop/models/subscription_update_response.rbi +25 -0
  215. data/rbi/lib/{terminal-shop → terminal_shop}/models/token.rbi +11 -7
  216. data/rbi/lib/terminal_shop/models/token_create_params.rbi +19 -0
  217. data/rbi/lib/{terminal-shop → terminal_shop}/models/token_create_response.rbi +15 -14
  218. data/rbi/lib/terminal_shop/models/token_delete_params.rbi +19 -0
  219. data/rbi/lib/{terminal-shop → terminal_shop}/models/token_delete_response.rbi +3 -5
  220. data/rbi/lib/terminal_shop/models/token_get_params.rbi +19 -0
  221. data/rbi/lib/terminal_shop/models/token_get_response.rbi +27 -0
  222. data/rbi/lib/terminal_shop/models/token_list_params.rbi +19 -0
  223. data/rbi/lib/{terminal-shop → terminal_shop}/models/token_list_response.rbi +7 -7
  224. data/rbi/lib/terminal_shop/models/view_init_params.rbi +19 -0
  225. data/rbi/lib/{terminal-shop → terminal_shop}/models/view_init_response.rbi +25 -25
  226. data/rbi/lib/{terminal-shop → terminal_shop}/request_options.rbi +11 -13
  227. data/rbi/lib/{terminal-shop → terminal_shop}/resources/address.rbi +17 -17
  228. data/rbi/lib/{terminal-shop → terminal_shop}/resources/app.rbi +17 -16
  229. data/rbi/lib/{terminal-shop → terminal_shop}/resources/card.rbi +28 -22
  230. data/rbi/lib/{terminal-shop → terminal_shop}/resources/cart.rbi +35 -23
  231. data/rbi/lib/{terminal-shop → terminal_shop}/resources/email.rbi +4 -6
  232. data/rbi/lib/{terminal-shop → terminal_shop}/resources/order.rbi +15 -13
  233. data/rbi/lib/{terminal-shop → terminal_shop}/resources/product.rbi +13 -9
  234. data/rbi/lib/{terminal-shop → terminal_shop}/resources/profile.rbi +13 -8
  235. data/rbi/lib/{terminal-shop → terminal_shop}/resources/subscription.rbi +49 -17
  236. data/rbi/lib/{terminal-shop → terminal_shop}/resources/token.rbi +24 -16
  237. data/rbi/lib/{terminal-shop → terminal_shop}/resources/view.rbi +12 -6
  238. data/rbi/lib/{terminal-shop → terminal_shop}/version.rbi +1 -1
  239. data/sig/{terminal-shop → terminal_shop}/client.rbs +3 -3
  240. data/sig/terminal_shop/errors.rbs +101 -0
  241. data/sig/terminal_shop/file_part.rbs +21 -0
  242. data/sig/terminal_shop/internal/transport/base_client.rbs +116 -0
  243. data/sig/terminal_shop/internal/transport/pooled_net_requester.rbs +41 -0
  244. data/sig/terminal_shop/internal/type/array_of.rbs +45 -0
  245. data/sig/terminal_shop/internal/type/base_model.rbs +96 -0
  246. data/sig/terminal_shop/internal/type/base_page.rbs +24 -0
  247. data/sig/terminal_shop/internal/type/boolean.rbs +23 -0
  248. data/sig/terminal_shop/internal/type/converter.rbs +54 -0
  249. data/sig/terminal_shop/internal/type/enum.rbs +29 -0
  250. data/sig/terminal_shop/internal/type/file_input.rbs +23 -0
  251. data/sig/terminal_shop/internal/type/hash_of.rbs +45 -0
  252. data/sig/terminal_shop/internal/type/request_parameters.rbs +15 -0
  253. data/sig/terminal_shop/internal/type/union.rbs +49 -0
  254. data/sig/terminal_shop/internal/type/unknown.rbs +23 -0
  255. data/sig/terminal_shop/internal/util.rbs +158 -0
  256. data/sig/terminal_shop/internal.rbs +5 -0
  257. data/sig/{terminal-shop → terminal_shop}/models/address.rbs +5 -1
  258. data/sig/{terminal-shop → terminal_shop}/models/address_create_params.rbs +4 -4
  259. data/sig/{terminal-shop → terminal_shop}/models/address_create_response.rbs +1 -1
  260. data/sig/terminal_shop/models/address_delete_params.rbs +15 -0
  261. data/sig/{terminal-shop → terminal_shop}/models/address_delete_response.rbs +1 -1
  262. data/sig/terminal_shop/models/address_get_params.rbs +15 -0
  263. data/sig/{terminal-shop → terminal_shop}/models/address_get_response.rbs +1 -1
  264. data/sig/terminal_shop/models/address_list_params.rbs +15 -0
  265. data/sig/{terminal-shop → terminal_shop}/models/address_list_response.rbs +1 -1
  266. data/sig/{terminal-shop → terminal_shop}/models/app.rbs +1 -1
  267. data/sig/{terminal-shop → terminal_shop}/models/app_create_params.rbs +5 -4
  268. data/sig/{terminal-shop → terminal_shop}/models/app_create_response.rbs +2 -2
  269. data/sig/terminal_shop/models/app_delete_params.rbs +15 -0
  270. data/sig/{terminal-shop → terminal_shop}/models/app_delete_response.rbs +1 -1
  271. data/sig/terminal_shop/models/app_get_params.rbs +15 -0
  272. data/sig/{terminal-shop → terminal_shop}/models/app_get_response.rbs +1 -1
  273. data/sig/terminal_shop/models/app_list_params.rbs +15 -0
  274. data/sig/{terminal-shop → terminal_shop}/models/app_list_response.rbs +1 -1
  275. data/sig/{terminal-shop → terminal_shop}/models/card.rbs +6 -2
  276. data/sig/terminal_shop/models/card_collect_params.rbs +15 -0
  277. data/sig/{terminal-shop → terminal_shop}/models/card_collect_response.rbs +2 -2
  278. data/sig/{terminal-shop → terminal_shop}/models/card_create_params.rbs +4 -4
  279. data/sig/{terminal-shop → terminal_shop}/models/card_create_response.rbs +1 -1
  280. data/sig/terminal_shop/models/card_delete_params.rbs +15 -0
  281. data/sig/{terminal-shop → terminal_shop}/models/card_delete_response.rbs +1 -1
  282. data/sig/terminal_shop/models/card_get_params.rbs +15 -0
  283. data/sig/{terminal-shop → terminal_shop}/models/card_get_response.rbs +1 -1
  284. data/sig/terminal_shop/models/card_list_params.rbs +15 -0
  285. data/sig/{terminal-shop → terminal_shop}/models/card_list_response.rbs +1 -1
  286. data/sig/{terminal-shop → terminal_shop}/models/cart.rbs +4 -4
  287. data/sig/terminal_shop/models/cart_clear_params.rbs +15 -0
  288. data/sig/{terminal-shop → terminal_shop}/models/cart_clear_response.rbs +1 -1
  289. data/sig/terminal_shop/models/cart_convert_params.rbs +15 -0
  290. data/sig/{terminal-shop → terminal_shop}/models/cart_convert_response.rbs +1 -1
  291. data/sig/terminal_shop/models/cart_get_params.rbs +15 -0
  292. data/sig/{terminal-shop → terminal_shop}/models/cart_get_response.rbs +1 -1
  293. data/sig/{terminal-shop → terminal_shop}/models/cart_set_address_params.rbs +4 -4
  294. data/sig/{terminal-shop → terminal_shop}/models/cart_set_address_response.rbs +1 -1
  295. data/sig/{terminal-shop → terminal_shop}/models/cart_set_card_params.rbs +4 -4
  296. data/sig/{terminal-shop → terminal_shop}/models/cart_set_card_response.rbs +1 -1
  297. data/sig/{terminal-shop → terminal_shop}/models/cart_set_item_params.rbs +4 -4
  298. data/sig/{terminal-shop → terminal_shop}/models/cart_set_item_response.rbs +1 -1
  299. data/sig/{terminal-shop → terminal_shop}/models/email_create_params.rbs +4 -4
  300. data/sig/{terminal-shop → terminal_shop}/models/email_create_response.rbs +1 -1
  301. data/sig/{terminal-shop → terminal_shop}/models/order.rbs +51 -6
  302. data/sig/{terminal-shop → terminal_shop}/models/order_create_params.rbs +4 -4
  303. data/sig/{terminal-shop → terminal_shop}/models/order_create_response.rbs +1 -1
  304. data/sig/terminal_shop/models/order_get_params.rbs +15 -0
  305. data/sig/{terminal-shop → terminal_shop}/models/order_get_response.rbs +1 -1
  306. data/sig/terminal_shop/models/order_list_params.rbs +15 -0
  307. data/sig/{terminal-shop → terminal_shop}/models/order_list_response.rbs +1 -1
  308. data/sig/{terminal-shop → terminal_shop}/models/product.rbs +9 -3
  309. data/sig/terminal_shop/models/product_get_params.rbs +15 -0
  310. data/sig/{terminal-shop → terminal_shop}/models/product_get_response.rbs +1 -1
  311. data/sig/terminal_shop/models/product_list_params.rbs +15 -0
  312. data/sig/{terminal-shop → terminal_shop}/models/product_list_response.rbs +1 -1
  313. data/sig/terminal_shop/models/product_variant.rbs +70 -0
  314. data/sig/{terminal-shop → terminal_shop}/models/profile.rbs +2 -2
  315. data/sig/terminal_shop/models/profile_me_params.rbs +15 -0
  316. data/sig/{terminal-shop → terminal_shop}/models/profile_me_response.rbs +1 -1
  317. data/sig/{terminal-shop → terminal_shop}/models/profile_update_params.rbs +5 -4
  318. data/sig/{terminal-shop → terminal_shop}/models/profile_update_response.rbs +1 -1
  319. data/sig/{terminal-shop → terminal_shop}/models/region.rbs +3 -2
  320. data/sig/{terminal-shop → terminal_shop}/models/subscription.rbs +12 -4
  321. data/sig/{terminal-shop → terminal_shop}/models/subscription_create_params.rbs +4 -3
  322. data/sig/{terminal-shop → terminal_shop}/models/subscription_create_response.rbs +1 -1
  323. data/sig/terminal_shop/models/subscription_delete_params.rbs +15 -0
  324. data/sig/{terminal-shop → terminal_shop}/models/subscription_delete_response.rbs +1 -1
  325. data/sig/terminal_shop/models/subscription_get_params.rbs +15 -0
  326. data/sig/{terminal-shop → terminal_shop}/models/subscription_get_response.rbs +1 -1
  327. data/sig/terminal_shop/models/subscription_list_params.rbs +15 -0
  328. data/sig/{terminal-shop → terminal_shop}/models/subscription_list_response.rbs +1 -1
  329. data/sig/terminal_shop/models/subscription_update_params.rbs +71 -0
  330. data/sig/terminal_shop/models/subscription_update_response.rbs +14 -0
  331. data/sig/{terminal-shop → terminal_shop}/models/token.rbs +1 -1
  332. data/sig/terminal_shop/models/token_create_params.rbs +15 -0
  333. data/sig/{terminal-shop → terminal_shop}/models/token_create_response.rbs +2 -2
  334. data/sig/terminal_shop/models/token_delete_params.rbs +15 -0
  335. data/sig/{terminal-shop → terminal_shop}/models/token_delete_response.rbs +1 -1
  336. data/sig/terminal_shop/models/token_get_params.rbs +15 -0
  337. data/sig/{terminal-shop → terminal_shop}/models/token_get_response.rbs +1 -1
  338. data/sig/terminal_shop/models/token_list_params.rbs +15 -0
  339. data/sig/{terminal-shop → terminal_shop}/models/token_list_response.rbs +1 -1
  340. data/sig/terminal_shop/models/view_init_params.rbs +15 -0
  341. data/sig/{terminal-shop → terminal_shop}/models/view_init_response.rbs +2 -2
  342. data/sig/{terminal-shop → terminal_shop}/request_options.rbs +1 -1
  343. data/sig/{terminal-shop → terminal_shop}/resources/subscription.rbs +10 -0
  344. data/sig/{terminal-shop → terminal_shop}/version.rbs +1 -1
  345. metadata +354 -339
  346. data/lib/terminal-shop/errors.rb +0 -183
  347. data/lib/terminal-shop/models/address.rb +0 -90
  348. data/lib/terminal-shop/models/address_create_params.rb +0 -86
  349. data/lib/terminal-shop/models/address_create_response.rb +0 -20
  350. data/lib/terminal-shop/models/address_delete_params.rb +0 -18
  351. data/lib/terminal-shop/models/address_delete_response.rb +0 -19
  352. data/lib/terminal-shop/models/address_get_params.rb +0 -18
  353. data/lib/terminal-shop/models/address_list_params.rb +0 -18
  354. data/lib/terminal-shop/models/address_list_response.rb +0 -20
  355. data/lib/terminal-shop/models/app_create_params.rb +0 -30
  356. data/lib/terminal-shop/models/app_delete_params.rb +0 -18
  357. data/lib/terminal-shop/models/app_delete_response.rb +0 -19
  358. data/lib/terminal-shop/models/app_get_params.rb +0 -18
  359. data/lib/terminal-shop/models/app_list_params.rb +0 -18
  360. data/lib/terminal-shop/models/app_list_response.rb +0 -20
  361. data/lib/terminal-shop/models/card.rb +0 -67
  362. data/lib/terminal-shop/models/card_collect_params.rb +0 -18
  363. data/lib/terminal-shop/models/card_collect_response.rb +0 -38
  364. data/lib/terminal-shop/models/card_create_params.rb +0 -26
  365. data/lib/terminal-shop/models/card_create_response.rb +0 -20
  366. data/lib/terminal-shop/models/card_delete_params.rb +0 -18
  367. data/lib/terminal-shop/models/card_delete_response.rb +0 -19
  368. data/lib/terminal-shop/models/card_get_params.rb +0 -18
  369. data/lib/terminal-shop/models/card_list_params.rb +0 -18
  370. data/lib/terminal-shop/models/card_list_response.rb +0 -20
  371. data/lib/terminal-shop/models/cart.rb +0 -178
  372. data/lib/terminal-shop/models/cart_clear_params.rb +0 -18
  373. data/lib/terminal-shop/models/cart_clear_response.rb +0 -19
  374. data/lib/terminal-shop/models/cart_convert_params.rb +0 -18
  375. data/lib/terminal-shop/models/cart_get_params.rb +0 -18
  376. data/lib/terminal-shop/models/cart_set_address_params.rb +0 -25
  377. data/lib/terminal-shop/models/cart_set_address_response.rb +0 -19
  378. data/lib/terminal-shop/models/cart_set_card_params.rb +0 -25
  379. data/lib/terminal-shop/models/cart_set_card_response.rb +0 -19
  380. data/lib/terminal-shop/models/cart_set_item_params.rb +0 -32
  381. data/lib/terminal-shop/models/email_create_params.rb +0 -25
  382. data/lib/terminal-shop/models/email_create_response.rb +0 -19
  383. data/lib/terminal-shop/models/order.rb +0 -257
  384. data/lib/terminal-shop/models/order_create_params.rb +0 -39
  385. data/lib/terminal-shop/models/order_create_response.rb +0 -20
  386. data/lib/terminal-shop/models/order_get_params.rb +0 -18
  387. data/lib/terminal-shop/models/order_list_params.rb +0 -18
  388. data/lib/terminal-shop/models/order_list_response.rb +0 -20
  389. data/lib/terminal-shop/models/product.rb +0 -150
  390. data/lib/terminal-shop/models/product_get_params.rb +0 -18
  391. data/lib/terminal-shop/models/product_list_params.rb +0 -18
  392. data/lib/terminal-shop/models/product_list_response.rb +0 -20
  393. data/lib/terminal-shop/models/product_variant.rb +0 -36
  394. data/lib/terminal-shop/models/profile_me_params.rb +0 -18
  395. data/lib/terminal-shop/models/profile_update_params.rb +0 -30
  396. data/lib/terminal-shop/models/subscription.rb +0 -119
  397. data/lib/terminal-shop/models/subscription_create_params.rb +0 -18
  398. data/lib/terminal-shop/models/subscription_create_response.rb +0 -19
  399. data/lib/terminal-shop/models/subscription_delete_params.rb +0 -18
  400. data/lib/terminal-shop/models/subscription_delete_response.rb +0 -19
  401. data/lib/terminal-shop/models/subscription_get_params.rb +0 -18
  402. data/lib/terminal-shop/models/subscription_list_params.rb +0 -18
  403. data/lib/terminal-shop/models/subscription_list_response.rb +0 -20
  404. data/lib/terminal-shop/models/token.rb +0 -37
  405. data/lib/terminal-shop/models/token_create_params.rb +0 -18
  406. data/lib/terminal-shop/models/token_create_response.rb +0 -42
  407. data/lib/terminal-shop/models/token_delete_params.rb +0 -18
  408. data/lib/terminal-shop/models/token_delete_response.rb +0 -19
  409. data/lib/terminal-shop/models/token_get_params.rb +0 -18
  410. data/lib/terminal-shop/models/token_get_response.rb +0 -21
  411. data/lib/terminal-shop/models/token_list_params.rb +0 -18
  412. data/lib/terminal-shop/models/token_list_response.rb +0 -20
  413. data/lib/terminal-shop/models/view_init_params.rb +0 -18
  414. data/lib/terminal-shop/models/view_init_response.rb +0 -93
  415. data/lib/terminal-shop/resources/subscription.rb +0 -96
  416. data/lib/terminal-shop/transport/base_client.rb +0 -459
  417. data/lib/terminal-shop/transport/pooled_net_requester.rb +0 -182
  418. data/lib/terminal-shop/type/array_of.rb +0 -112
  419. data/lib/terminal-shop/type/base_model.rb +0 -364
  420. data/lib/terminal-shop/type/base_page.rb +0 -61
  421. data/lib/terminal-shop/type/boolean_model.rb +0 -52
  422. data/lib/terminal-shop/type/converter.rb +0 -217
  423. data/lib/terminal-shop/type/enum.rb +0 -101
  424. data/lib/terminal-shop/type/hash_of.rb +0 -138
  425. data/lib/terminal-shop/type/request_parameters.rb +0 -38
  426. data/lib/terminal-shop/type/union.rb +0 -185
  427. data/lib/terminal-shop/type/unknown.rb +0 -56
  428. data/lib/terminal-shop/type.rb +0 -23
  429. data/lib/terminal-shop/util.rb +0 -726
  430. data/lib/terminal-shop.rb +0 -149
  431. data/rbi/lib/terminal-shop/errors.rbi +0 -144
  432. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +0 -21
  433. data/rbi/lib/terminal-shop/models/address_get_params.rbi +0 -21
  434. data/rbi/lib/terminal-shop/models/address_list_params.rbi +0 -21
  435. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +0 -21
  436. data/rbi/lib/terminal-shop/models/app_get_params.rbi +0 -21
  437. data/rbi/lib/terminal-shop/models/app_get_response.rbi +0 -22
  438. data/rbi/lib/terminal-shop/models/app_list_params.rbi +0 -21
  439. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +0 -21
  440. data/rbi/lib/terminal-shop/models/card_create_params.rbi +0 -32
  441. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +0 -21
  442. data/rbi/lib/terminal-shop/models/card_get_params.rbi +0 -21
  443. data/rbi/lib/terminal-shop/models/card_get_response.rbi +0 -22
  444. data/rbi/lib/terminal-shop/models/card_list_params.rbi +0 -21
  445. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +0 -21
  446. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +0 -21
  447. data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +0 -22
  448. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +0 -21
  449. data/rbi/lib/terminal-shop/models/cart_get_response.rbi +0 -22
  450. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +0 -31
  451. data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +0 -22
  452. data/rbi/lib/terminal-shop/models/email_create_params.rbi +0 -31
  453. data/rbi/lib/terminal-shop/models/order_get_params.rbi +0 -21
  454. data/rbi/lib/terminal-shop/models/order_get_response.rbi +0 -22
  455. data/rbi/lib/terminal-shop/models/order_list_params.rbi +0 -21
  456. data/rbi/lib/terminal-shop/models/product_get_params.rbi +0 -21
  457. data/rbi/lib/terminal-shop/models/product_list_params.rbi +0 -21
  458. data/rbi/lib/terminal-shop/models/product_variant.rbi +0 -28
  459. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +0 -21
  460. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +0 -21
  461. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +0 -21
  462. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +0 -21
  463. data/rbi/lib/terminal-shop/models/token_create_params.rbi +0 -21
  464. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +0 -21
  465. data/rbi/lib/terminal-shop/models/token_get_params.rbi +0 -21
  466. data/rbi/lib/terminal-shop/models/token_get_response.rbi +0 -23
  467. data/rbi/lib/terminal-shop/models/token_list_params.rbi +0 -21
  468. data/rbi/lib/terminal-shop/models/view_init_params.rbi +0 -21
  469. data/rbi/lib/terminal-shop/transport/base_client.rbi +0 -208
  470. data/rbi/lib/terminal-shop/transport/pooled_net_requester.rbi +0 -64
  471. data/rbi/lib/terminal-shop/type/array_of.rbi +0 -82
  472. data/rbi/lib/terminal-shop/type/base_model.rbi +0 -194
  473. data/rbi/lib/terminal-shop/type/base_page.rbi +0 -38
  474. data/rbi/lib/terminal-shop/type/boolean_model.rbi +0 -41
  475. data/rbi/lib/terminal-shop/type/converter.rbi +0 -101
  476. data/rbi/lib/terminal-shop/type/enum.rbi +0 -58
  477. data/rbi/lib/terminal-shop/type/hash_of.rbi +0 -85
  478. data/rbi/lib/terminal-shop/type/request_parameters.rbi +0 -20
  479. data/rbi/lib/terminal-shop/type/union.rbi +0 -68
  480. data/rbi/lib/terminal-shop/type/unknown.rbi +0 -37
  481. data/rbi/lib/terminal-shop/type.rbi +0 -23
  482. data/rbi/lib/terminal-shop/util.rbi +0 -281
  483. data/sig/terminal-shop/errors.rbs +0 -99
  484. data/sig/terminal-shop/models/address_delete_params.rbs +0 -14
  485. data/sig/terminal-shop/models/address_get_params.rbs +0 -14
  486. data/sig/terminal-shop/models/address_list_params.rbs +0 -14
  487. data/sig/terminal-shop/models/app_delete_params.rbs +0 -14
  488. data/sig/terminal-shop/models/app_get_params.rbs +0 -14
  489. data/sig/terminal-shop/models/app_list_params.rbs +0 -14
  490. data/sig/terminal-shop/models/card_collect_params.rbs +0 -14
  491. data/sig/terminal-shop/models/card_delete_params.rbs +0 -14
  492. data/sig/terminal-shop/models/card_get_params.rbs +0 -14
  493. data/sig/terminal-shop/models/card_list_params.rbs +0 -14
  494. data/sig/terminal-shop/models/cart_clear_params.rbs +0 -14
  495. data/sig/terminal-shop/models/cart_convert_params.rbs +0 -14
  496. data/sig/terminal-shop/models/cart_get_params.rbs +0 -14
  497. data/sig/terminal-shop/models/order_get_params.rbs +0 -14
  498. data/sig/terminal-shop/models/order_list_params.rbs +0 -14
  499. data/sig/terminal-shop/models/product_get_params.rbs +0 -14
  500. data/sig/terminal-shop/models/product_list_params.rbs +0 -14
  501. data/sig/terminal-shop/models/product_variant.rbs +0 -17
  502. data/sig/terminal-shop/models/profile_me_params.rbs +0 -14
  503. data/sig/terminal-shop/models/subscription_delete_params.rbs +0 -14
  504. data/sig/terminal-shop/models/subscription_get_params.rbs +0 -14
  505. data/sig/terminal-shop/models/subscription_list_params.rbs +0 -14
  506. data/sig/terminal-shop/models/token_create_params.rbs +0 -14
  507. data/sig/terminal-shop/models/token_delete_params.rbs +0 -14
  508. data/sig/terminal-shop/models/token_get_params.rbs +0 -14
  509. data/sig/terminal-shop/models/token_list_params.rbs +0 -14
  510. data/sig/terminal-shop/models/view_init_params.rbs +0 -14
  511. data/sig/terminal-shop/transport/base_client.rbs +0 -110
  512. data/sig/terminal-shop/transport/pooled_net_requester.rbs +0 -39
  513. data/sig/terminal-shop/type/array_of.rbs +0 -36
  514. data/sig/terminal-shop/type/base_model.rbs +0 -73
  515. data/sig/terminal-shop/type/base_page.rbs +0 -22
  516. data/sig/terminal-shop/type/boolean_model.rbs +0 -18
  517. data/sig/terminal-shop/type/converter.rbs +0 -42
  518. data/sig/terminal-shop/type/enum.rbs +0 -22
  519. data/sig/terminal-shop/type/hash_of.rbs +0 -36
  520. data/sig/terminal-shop/type/request_parameters.rbs +0 -13
  521. data/sig/terminal-shop/type/union.rbs +0 -40
  522. data/sig/terminal-shop/type/unknown.rbs +0 -18
  523. data/sig/terminal-shop/type.rbs +0 -22
  524. data/sig/terminal-shop/util.rbs +0 -136
  525. /data/sig/{terminal-shop → terminal_shop}/resources/address.rbs +0 -0
  526. /data/sig/{terminal-shop → terminal_shop}/resources/app.rbs +0 -0
  527. /data/sig/{terminal-shop → terminal_shop}/resources/card.rbs +0 -0
  528. /data/sig/{terminal-shop → terminal_shop}/resources/cart.rbs +0 -0
  529. /data/sig/{terminal-shop → terminal_shop}/resources/email.rbs +0 -0
  530. /data/sig/{terminal-shop → terminal_shop}/resources/order.rbs +0 -0
  531. /data/sig/{terminal-shop → terminal_shop}/resources/product.rbs +0 -0
  532. /data/sig/{terminal-shop → terminal_shop}/resources/profile.rbs +0 -0
  533. /data/sig/{terminal-shop → terminal_shop}/resources/token.rbs +0 -0
  534. /data/sig/{terminal-shop → terminal_shop}/resources/view.rbs +0 -0
@@ -0,0 +1,274 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TerminalShop
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ module Converter
8
+ # rubocop:disable Lint/UnusedMethodArgument
9
+
10
+ # @api private
11
+ #
12
+ # @param value [Object]
13
+ #
14
+ # @param state [Hash{Symbol=>Object}] .
15
+ #
16
+ # @option state [Boolean, :strong] :strictness
17
+ #
18
+ # @option state [Hash{Symbol=>Object}] :exactness
19
+ #
20
+ # @option state [Integer] :branched
21
+ #
22
+ # @return [Object]
23
+ def coerce(value, state:) = (raise NotImplementedError)
24
+
25
+ # @api private
26
+ #
27
+ # @param value [Object]
28
+ #
29
+ # @param state [Hash{Symbol=>Object}] .
30
+ #
31
+ # @option state [Boolean] :can_retry
32
+ #
33
+ # @return [Object]
34
+ def dump(value, state:)
35
+ case value
36
+ in Array
37
+ value.map { TerminalShop::Internal::Type::Unknown.dump(_1, state: state) }
38
+ in Hash
39
+ value.transform_values { TerminalShop::Internal::Type::Unknown.dump(_1, state: state) }
40
+ in TerminalShop::Internal::Type::BaseModel
41
+ value.class.dump(value, state: state)
42
+ in StringIO
43
+ value.string
44
+ in Pathname | IO
45
+ state[:can_retry] = false if value.is_a?(IO)
46
+ TerminalShop::FilePart.new(value)
47
+ in TerminalShop::FilePart
48
+ state[:can_retry] = false if value.content.is_a?(IO)
49
+ value
50
+ else
51
+ value
52
+ end
53
+ end
54
+
55
+ # @api private
56
+ #
57
+ # @param depth [Integer]
58
+ #
59
+ # @return [String]
60
+ def inspect(depth: 0)
61
+ super()
62
+ end
63
+
64
+ # rubocop:enable Lint/UnusedMethodArgument
65
+
66
+ class << self
67
+ # @api private
68
+ #
69
+ # @param spec [Hash{Symbol=>Object}, Proc, TerminalShop::Internal::Type::Converter, Class] .
70
+ #
71
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
72
+ #
73
+ # @option spec [Proc] :enum
74
+ #
75
+ # @option spec [Proc] :union
76
+ #
77
+ # @option spec [Boolean] :"nil?"
78
+ #
79
+ # @return [Proc]
80
+ def type_info(spec)
81
+ case spec
82
+ in Proc
83
+ spec
84
+ in Hash
85
+ type_info(spec.slice(:const, :enum, :union).first&.last)
86
+ in true | false
87
+ -> { TerminalShop::Internal::Type::Boolean }
88
+ in TerminalShop::Internal::Type::Converter | Class | Symbol
89
+ -> { spec }
90
+ in NilClass | Integer | Float
91
+ -> { spec.class }
92
+ end
93
+ end
94
+
95
+ # @api private
96
+ #
97
+ # Based on `target`, transform `value` into `target`, to the extent possible:
98
+ #
99
+ # 1. if the given `value` conforms to `target` already, return the given `value`
100
+ # 2. if it's possible and safe to convert the given `value` to `target`, then the
101
+ # converted value
102
+ # 3. otherwise, the given `value` unaltered
103
+ #
104
+ # The coercion process is subject to improvement between minor release versions.
105
+ # See https://docs.pydantic.dev/latest/concepts/unions/#smart-mode
106
+ #
107
+ # @param target [TerminalShop::Internal::Type::Converter, Class]
108
+ #
109
+ # @param value [Object]
110
+ #
111
+ # @param state [Hash{Symbol=>Object}] The `strictness` is one of `true`, `false`, or `:strong`. This informs the
112
+ # coercion strategy when we have to decide between multiple possible conversion
113
+ # targets:
114
+ #
115
+ # - `true`: the conversion must be exact, with minimum coercion.
116
+ # - `false`: the conversion can be approximate, with some coercion.
117
+ # - `:strong`: the conversion must be exact, with no coercion, and raise an error
118
+ # if not possible.
119
+ #
120
+ # The `exactness` is `Hash` with keys being one of `yes`, `no`, or `maybe`. For
121
+ # any given conversion attempt, the exactness will be updated based on how closely
122
+ # the value recursively matches the target type:
123
+ #
124
+ # - `yes`: the value can be converted to the target type with minimum coercion.
125
+ # - `maybe`: the value can be converted to the target type with some reasonable
126
+ # coercion.
127
+ # - `no`: the value cannot be converted to the target type.
128
+ #
129
+ # See implementation below for more details.
130
+ #
131
+ # @option state [Boolean, :strong] :strictness
132
+ #
133
+ # @option state [Hash{Symbol=>Object}] :exactness
134
+ #
135
+ # @option state [Integer] :branched
136
+ #
137
+ # @return [Object]
138
+ def coerce(
139
+ target,
140
+ value,
141
+ state: {strictness: true, exactness: {yes: 0, no: 0, maybe: 0}, branched: 0}
142
+ )
143
+ # rubocop:disable Lint/SuppressedException
144
+ # rubocop:disable Metrics/BlockNesting
145
+ strictness, exactness = state.fetch_values(:strictness, :exactness)
146
+
147
+ case target
148
+ in TerminalShop::Internal::Type::Converter
149
+ return target.coerce(value, state: state)
150
+ in Class
151
+ if value.is_a?(target)
152
+ exactness[:yes] += 1
153
+ return value
154
+ end
155
+
156
+ case target
157
+ in -> { _1 <= NilClass }
158
+ exactness[value.nil? ? :yes : :maybe] += 1
159
+ return nil
160
+ in -> { _1 <= Integer }
161
+ if value.is_a?(Integer)
162
+ exactness[:yes] += 1
163
+ return value
164
+ elsif strictness == :strong && Integer(value, exception: false) != value
165
+ message = "no implicit conversion of #{value.class} into #{target.inspect}"
166
+ raise value.is_a?(Numeric) ? ArgumentError.new(message) : TypeError.new(message)
167
+ else
168
+ Kernel.then do
169
+ return Integer(value).tap { exactness[:maybe] += 1 }
170
+ rescue ArgumentError, TypeError
171
+ end
172
+ end
173
+ in -> { _1 <= Float }
174
+ if value.is_a?(Numeric)
175
+ exactness[:yes] += 1
176
+ return Float(value)
177
+ elsif strictness == :strong
178
+ message = "no implicit conversion of #{value.class} into #{target.inspect}"
179
+ raise TypeError.new(message)
180
+ else
181
+ Kernel.then do
182
+ return Float(value).tap { exactness[:maybe] += 1 }
183
+ rescue ArgumentError, TypeError
184
+ end
185
+ end
186
+ in -> { _1 <= String }
187
+ case value
188
+ in String | Symbol | Numeric
189
+ exactness[value.is_a?(Numeric) ? :maybe : :yes] += 1
190
+ return value.to_s
191
+ in StringIO
192
+ exactness[:yes] += 1
193
+ return value.string
194
+ else
195
+ if strictness == :strong
196
+ message = "no implicit conversion of #{value.class} into #{target.inspect}"
197
+ raise TypeError.new(message)
198
+ end
199
+ end
200
+ in -> { _1 <= Date || _1 <= Time }
201
+ Kernel.then do
202
+ return target.parse(value).tap { exactness[:yes] += 1 }
203
+ rescue ArgumentError, TypeError => e
204
+ raise e if strictness == :strong
205
+ end
206
+ in -> { _1 <= StringIO } if value.is_a?(String)
207
+ exactness[:yes] += 1
208
+ return StringIO.new(value.b)
209
+ else
210
+ end
211
+ in Symbol
212
+ case value
213
+ in Symbol | String
214
+ if value.to_sym == target
215
+ exactness[:yes] += 1
216
+ return target
217
+ else
218
+ exactness[:maybe] += 1
219
+ return value
220
+ end
221
+ else
222
+ if strictness == :strong
223
+ message = "cannot convert non-matching #{value.class} into #{target.inspect}"
224
+ raise ArgumentError.new(message)
225
+ end
226
+ end
227
+ else
228
+ end
229
+
230
+ exactness[:no] += 1
231
+ value
232
+ # rubocop:enable Metrics/BlockNesting
233
+ # rubocop:enable Lint/SuppressedException
234
+ end
235
+
236
+ # @api private
237
+ #
238
+ # @param target [TerminalShop::Internal::Type::Converter, Class]
239
+ #
240
+ # @param value [Object]
241
+ #
242
+ # @param state [Hash{Symbol=>Object}] .
243
+ #
244
+ # @option state [Boolean] :can_retry
245
+ #
246
+ # @return [Object]
247
+ def dump(target, value, state: {can_retry: true})
248
+ case target
249
+ in TerminalShop::Internal::Type::Converter
250
+ target.dump(value, state: state)
251
+ else
252
+ TerminalShop::Internal::Type::Unknown.dump(value, state: state)
253
+ end
254
+ end
255
+
256
+ # @api private
257
+ #
258
+ # @param target [Object]
259
+ # @param depth [Integer]
260
+ #
261
+ # @return [String]
262
+ def inspect(target, depth:)
263
+ case target
264
+ in TerminalShop::Internal::Type::Converter
265
+ target.inspect(depth: depth.succ)
266
+ else
267
+ target.inspect
268
+ end
269
+ end
270
+ end
271
+ end
272
+ end
273
+ end
274
+ end
@@ -0,0 +1,133 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TerminalShop
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # A value from among a specified list of options. OpenAPI enum values map to Ruby
9
+ # values in the SDK as follows:
10
+ #
11
+ # 1. boolean => true | false
12
+ # 2. integer => Integer
13
+ # 3. float => Float
14
+ # 4. string => Symbol
15
+ #
16
+ # We can therefore convert string values to Symbols, but can't convert other
17
+ # values safely.
18
+ #
19
+ # @example
20
+ # # `region` is a `TerminalShop::Models::Region`
21
+ # case region
22
+ # when TerminalShop::Models::Region::EU
23
+ # # ...
24
+ # when TerminalShop::Models::Region::NA
25
+ # # ...
26
+ # when TerminalShop::Models::Region::GLOBAL
27
+ # # ...
28
+ # else
29
+ # puts(region)
30
+ # end
31
+ #
32
+ # @example
33
+ # case region
34
+ # in :eu
35
+ # # ...
36
+ # in :na
37
+ # # ...
38
+ # in :global
39
+ # # ...
40
+ # else
41
+ # puts(region)
42
+ # end
43
+ module Enum
44
+ include TerminalShop::Internal::Type::Converter
45
+
46
+ # All of the valid Symbol values for this enum.
47
+ #
48
+ # @return [Array<NilClass, Boolean, Integer, Float, Symbol>]
49
+ def values = constants.map { const_get(_1) }
50
+
51
+ # @api public
52
+ #
53
+ # @param other [Object]
54
+ #
55
+ # @return [Boolean]
56
+ def ===(other) = values.include?(other)
57
+
58
+ # @api public
59
+ #
60
+ # @param other [Object]
61
+ #
62
+ # @return [Boolean]
63
+ def ==(other)
64
+ # rubocop:disable Style/CaseEquality
65
+ TerminalShop::Internal::Type::Enum === other && other.values.to_set == values.to_set
66
+ # rubocop:enable Style/CaseEquality
67
+ end
68
+
69
+ # @api public
70
+ #
71
+ # @return [Integer]
72
+ def hash = values.to_set.hash
73
+
74
+ # @api private
75
+ #
76
+ # Unlike with primitives, `Enum` additionally validates that the value is a member
77
+ # of the enum.
78
+ #
79
+ # @param value [String, Symbol, Object]
80
+ #
81
+ # @param state [Hash{Symbol=>Object}] .
82
+ #
83
+ # @option state [Boolean, :strong] :strictness
84
+ #
85
+ # @option state [Hash{Symbol=>Object}] :exactness
86
+ #
87
+ # @option state [Integer] :branched
88
+ #
89
+ # @return [Symbol, Object]
90
+ def coerce(value, state:)
91
+ exactness = state.fetch(:exactness)
92
+ val = value.is_a?(String) ? value.to_sym : value
93
+
94
+ if values.include?(val)
95
+ exactness[:yes] += 1
96
+ val
97
+ else
98
+ exactness[values.first&.class == val.class ? :maybe : :no] += 1
99
+ value
100
+ end
101
+ end
102
+
103
+ # @!parse
104
+ # # @api private
105
+ # #
106
+ # # @param value [Symbol, Object]
107
+ # #
108
+ # # @param state [Hash{Symbol=>Object}] .
109
+ # #
110
+ # # @option state [Boolean] :can_retry
111
+ # #
112
+ # # @return [Symbol, Object]
113
+ # def dump(value, state:) = super
114
+
115
+ # @api private
116
+ #
117
+ # @param depth [Integer]
118
+ #
119
+ # @return [String]
120
+ def inspect(depth: 0)
121
+ if depth.positive?
122
+ return is_a?(Module) ? super() : self.class.name
123
+ end
124
+
125
+ members = values.map { TerminalShop::Internal::Type::Converter.inspect(_1, depth: depth.succ) }
126
+ prefix = is_a?(Module) ? name : self.class.name
127
+
128
+ "#{prefix}[#{members.join(' | ')}]"
129
+ end
130
+ end
131
+ end
132
+ end
133
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TerminalShop
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # @abstract
9
+ #
10
+ # Either `Pathname` or `StringIO`, or `IO`, or
11
+ # `TerminalShop::Internal::Type::FileInput`.
12
+ #
13
+ # Note: when `IO` is used, all retries are disabled, since many IO` streams are
14
+ # not rewindable.
15
+ class FileInput
16
+ extend TerminalShop::Internal::Type::Converter
17
+
18
+ private_class_method :new
19
+
20
+ # @api public
21
+ #
22
+ # @param other [Object]
23
+ #
24
+ # @return [Boolean]
25
+ def self.===(other)
26
+ case other
27
+ in Pathname | StringIO | IO | String | TerminalShop::FilePart
28
+ true
29
+ else
30
+ false
31
+ end
32
+ end
33
+
34
+ # @api public
35
+ #
36
+ # @param other [Object]
37
+ #
38
+ # @return [Boolean]
39
+ def self.==(other) = other.is_a?(Class) && other <= TerminalShop::Internal::Type::FileInput
40
+
41
+ class << self
42
+ # @api private
43
+ #
44
+ # @param value [StringIO, String, Object]
45
+ #
46
+ # @param state [Hash{Symbol=>Object}] .
47
+ #
48
+ # @option state [Boolean, :strong] :strictness
49
+ #
50
+ # @option state [Hash{Symbol=>Object}] :exactness
51
+ #
52
+ # @option state [Integer] :branched
53
+ #
54
+ # @return [StringIO, Object]
55
+ def coerce(value, state:)
56
+ exactness = state.fetch(:exactness)
57
+ case value
58
+ in String
59
+ exactness[:yes] += 1
60
+ StringIO.new(value)
61
+ in StringIO
62
+ exactness[:yes] += 1
63
+ value
64
+ else
65
+ exactness[:no] += 1
66
+ value
67
+ end
68
+ end
69
+
70
+ # @api private
71
+ #
72
+ # @param value [Pathname, StringIO, IO, String, Object]
73
+ #
74
+ # @param state [Hash{Symbol=>Object}] .
75
+ #
76
+ # @option state [Boolean] :can_retry
77
+ #
78
+ # @return [Pathname, StringIO, IO, String, Object]
79
+ def dump(value, state:)
80
+ # rubocop:disable Lint/DuplicateBranch
81
+ case value
82
+ in IO
83
+ state[:can_retry] = false
84
+ in TerminalShop::FilePart if value.content.is_a?(IO)
85
+ state[:can_retry] = false
86
+ else
87
+ end
88
+ # rubocop:enable Lint/DuplicateBranch
89
+
90
+ value
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,174 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TerminalShop
4
+ module Internal
5
+ module Type
6
+ # @api private
7
+ #
8
+ # @abstract
9
+ #
10
+ # @generic Elem
11
+ #
12
+ # Hash of items of a given type.
13
+ class HashOf
14
+ include TerminalShop::Internal::Type::Converter
15
+
16
+ private_class_method :new
17
+
18
+ # @overload [](type_info, spec = {})
19
+ #
20
+ # @param type_info [Hash{Symbol=>Object}, Proc, TerminalShop::Internal::Type::Converter, Class]
21
+ #
22
+ # @param spec [Hash{Symbol=>Object}] .
23
+ #
24
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
25
+ #
26
+ # @option spec [Proc] :enum
27
+ #
28
+ # @option spec [Proc] :union
29
+ #
30
+ # @option spec [Boolean] :"nil?"
31
+ #
32
+ # @return [TerminalShop::Internal::Type::HashOf]
33
+ def self.[](...) = new(...)
34
+
35
+ # @api public
36
+ #
37
+ # @param other [Object]
38
+ #
39
+ # @return [Boolean]
40
+ def ===(other)
41
+ type = item_type
42
+ case other
43
+ in Hash
44
+ other.all? do |key, val|
45
+ case [key, val]
46
+ in [Symbol | String, ^type]
47
+ true
48
+ else
49
+ false
50
+ end
51
+ end
52
+ else
53
+ false
54
+ end
55
+ end
56
+
57
+ # @api public
58
+ #
59
+ # @param other [Object]
60
+ #
61
+ # @return [Boolean]
62
+ def ==(other)
63
+ # rubocop:disable Layout/LineLength
64
+ other.is_a?(TerminalShop::Internal::Type::HashOf) && other.nilable? == nilable? && other.item_type == item_type
65
+ # rubocop:enable Layout/LineLength
66
+ end
67
+
68
+ # @api public
69
+ #
70
+ # @return [Integer]
71
+ def hash = [self.class, item_type].hash
72
+
73
+ # @api private
74
+ #
75
+ # @param value [Hash{Object=>Object}, Object]
76
+ #
77
+ # @param state [Hash{Symbol=>Object}] .
78
+ #
79
+ # @option state [Boolean, :strong] :strictness
80
+ #
81
+ # @option state [Hash{Symbol=>Object}] :exactness
82
+ #
83
+ # @option state [Integer] :branched
84
+ #
85
+ # @return [Hash{Symbol=>Object}, Object]
86
+ def coerce(value, state:)
87
+ exactness = state.fetch(:exactness)
88
+
89
+ unless value.is_a?(Hash)
90
+ exactness[:no] += 1
91
+ return value
92
+ end
93
+
94
+ target = item_type
95
+ exactness[:yes] += 1
96
+ value
97
+ .to_h do |key, val|
98
+ k = key.is_a?(String) ? key.to_sym : key
99
+ v =
100
+ case [nilable?, val]
101
+ in [true, nil]
102
+ exactness[:yes] += 1
103
+ nil
104
+ else
105
+ TerminalShop::Internal::Type::Converter.coerce(target, val, state: state)
106
+ end
107
+
108
+ exactness[:no] += 1 unless k.is_a?(Symbol)
109
+ [k, v]
110
+ end
111
+ end
112
+
113
+ # @api private
114
+ #
115
+ # @param value [Hash{Object=>Object}, Object]
116
+ #
117
+ # @param state [Hash{Symbol=>Object}] .
118
+ #
119
+ # @option state [Boolean] :can_retry
120
+ #
121
+ # @return [Hash{Symbol=>Object}, Object]
122
+ def dump(value, state:)
123
+ target = item_type
124
+ if value.is_a?(Hash)
125
+ value.transform_values do
126
+ TerminalShop::Internal::Type::Converter.dump(target, _1, state: state)
127
+ end
128
+ else
129
+ super
130
+ end
131
+ end
132
+
133
+ # @api private
134
+ #
135
+ # @return [generic<Elem>]
136
+ protected def item_type = @item_type_fn.call
137
+
138
+ # @api private
139
+ #
140
+ # @return [Boolean]
141
+ protected def nilable? = @nilable
142
+
143
+ # @api private
144
+ #
145
+ # @param type_info [Hash{Symbol=>Object}, Proc, TerminalShop::Internal::Type::Converter, Class]
146
+ #
147
+ # @param spec [Hash{Symbol=>Object}] .
148
+ #
149
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
150
+ #
151
+ # @option spec [Proc] :enum
152
+ #
153
+ # @option spec [Proc] :union
154
+ #
155
+ # @option spec [Boolean] :"nil?"
156
+ def initialize(type_info, spec = {})
157
+ @item_type_fn = TerminalShop::Internal::Type::Converter.type_info(type_info || spec)
158
+ @nilable = spec.fetch(:nil?, false)
159
+ end
160
+
161
+ # @api private
162
+ #
163
+ # @param depth [Integer]
164
+ #
165
+ # @return [String]
166
+ def inspect(depth: 0)
167
+ items = TerminalShop::Internal::Type::Converter.inspect(item_type, depth: depth.succ)
168
+
169
+ "#{self.class}[#{[items, nilable? ? 'nil' : nil].compact.join(' | ')}]"
170
+ end
171
+ end
172
+ end
173
+ end
174
+ end