terminal-shop 2.1.3 → 3.6.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 (543) hide show
  1. checksums.yaml +4 -4
  2. data/.ignore +2 -0
  3. data/CHANGELOG.md +702 -0
  4. data/README.md +88 -28
  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 +435 -0
  13. data/lib/terminal_shop/internal/type/base_page.rb +55 -0
  14. data/lib/terminal_shop/internal/type/boolean.rb +63 -0
  15. data/lib/terminal_shop/internal/type/converter.rb +274 -0
  16. data/lib/terminal_shop/internal/type/enum.rb +132 -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 +42 -0
  20. data/lib/terminal_shop/internal/type/union.rb +220 -0
  21. data/lib/terminal_shop/internal/type/unknown.rb +67 -0
  22. data/lib/terminal_shop/internal/util.rb +806 -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/models.rb +99 -0
  110. data/lib/{terminal-shop → terminal_shop}/request_options.rb +15 -17
  111. data/lib/{terminal-shop → terminal_shop}/resources/address.rb +28 -18
  112. data/lib/{terminal-shop → terminal_shop}/resources/app.rb +22 -14
  113. data/lib/{terminal-shop → terminal_shop}/resources/card.rb +30 -15
  114. data/lib/{terminal-shop → terminal_shop}/resources/cart.rb +30 -16
  115. data/lib/{terminal-shop → terminal_shop}/resources/email.rb +7 -3
  116. data/lib/{terminal-shop → terminal_shop}/resources/order.rb +18 -10
  117. data/lib/{terminal-shop → terminal_shop}/resources/product.rb +11 -5
  118. data/lib/{terminal-shop → terminal_shop}/resources/profile.rb +12 -8
  119. data/lib/terminal_shop/resources/subscription.rb +141 -0
  120. data/lib/{terminal-shop → terminal_shop}/resources/token.rb +20 -10
  121. data/lib/{terminal-shop → terminal_shop}/resources/view.rb +7 -3
  122. data/lib/{terminal-shop → terminal_shop}/version.rb +1 -1
  123. data/lib/terminal_shop.rb +144 -0
  124. data/rbi/{lib/terminal-shop → terminal_shop}/client.rbi +18 -19
  125. data/rbi/terminal_shop/errors.rbi +143 -0
  126. data/rbi/terminal_shop/file_part.rbi +34 -0
  127. data/rbi/terminal_shop/internal/transport/base_client.rbi +213 -0
  128. data/rbi/terminal_shop/internal/transport/pooled_net_requester.rbi +60 -0
  129. data/rbi/terminal_shop/internal/type/array_of.rbi +88 -0
  130. data/rbi/terminal_shop/internal/type/base_model.rbi +220 -0
  131. data/rbi/terminal_shop/internal/type/base_page.rbi +38 -0
  132. data/rbi/terminal_shop/internal/type/boolean.rbi +48 -0
  133. data/rbi/terminal_shop/internal/type/converter.rbi +120 -0
  134. data/rbi/terminal_shop/internal/type/enum.rbi +66 -0
  135. data/rbi/terminal_shop/internal/type/file_input.rbi +50 -0
  136. data/rbi/terminal_shop/internal/type/hash_of.rbi +88 -0
  137. data/rbi/terminal_shop/internal/type/request_parameters.rbi +21 -0
  138. data/rbi/terminal_shop/internal/type/union.rbi +80 -0
  139. data/rbi/terminal_shop/internal/type/unknown.rbi +40 -0
  140. data/rbi/terminal_shop/internal/util.rbi +306 -0
  141. data/rbi/terminal_shop/internal.rbi +11 -0
  142. data/rbi/{lib/terminal-shop → terminal_shop}/models/address.rbi +30 -6
  143. data/rbi/{lib/terminal-shop → terminal_shop}/models/address_create_params.rbi +14 -9
  144. data/rbi/{lib/terminal-shop → terminal_shop}/models/address_create_response.rbi +6 -6
  145. data/rbi/terminal_shop/models/address_delete_params.rbi +19 -0
  146. data/rbi/{lib/terminal-shop → terminal_shop}/models/address_delete_response.rbi +3 -5
  147. data/rbi/terminal_shop/models/address_get_params.rbi +19 -0
  148. data/rbi/{lib/terminal-shop → terminal_shop}/models/address_get_response.rbi +8 -8
  149. data/rbi/terminal_shop/models/address_list_params.rbi +19 -0
  150. data/rbi/{lib/terminal-shop → terminal_shop}/models/address_list_response.rbi +7 -7
  151. data/rbi/{lib/terminal-shop → terminal_shop}/models/app.rbi +12 -6
  152. data/rbi/{lib/terminal-shop → terminal_shop}/models/app_create_params.rbi +6 -8
  153. data/rbi/{lib/terminal-shop → terminal_shop}/models/app_create_response.rbi +13 -13
  154. data/rbi/terminal_shop/models/app_delete_params.rbi +19 -0
  155. data/rbi/{lib/terminal-shop → terminal_shop}/models/app_delete_response.rbi +3 -5
  156. data/rbi/terminal_shop/models/app_get_params.rbi +19 -0
  157. data/rbi/terminal_shop/models/app_get_response.rbi +25 -0
  158. data/rbi/terminal_shop/models/app_list_params.rbi +19 -0
  159. data/rbi/{lib/terminal-shop → terminal_shop}/models/app_list_response.rbi +7 -7
  160. data/rbi/{lib/terminal-shop → terminal_shop}/models/card.rbi +32 -15
  161. data/rbi/terminal_shop/models/card_collect_params.rbi +19 -0
  162. data/rbi/{lib/terminal-shop → terminal_shop}/models/card_collect_response.rbi +16 -15
  163. data/rbi/terminal_shop/models/card_create_params.rbi +31 -0
  164. data/rbi/{lib/terminal-shop → terminal_shop}/models/card_create_response.rbi +6 -6
  165. data/rbi/terminal_shop/models/card_delete_params.rbi +19 -0
  166. data/rbi/{lib/terminal-shop → terminal_shop}/models/card_delete_response.rbi +3 -5
  167. data/rbi/terminal_shop/models/card_get_params.rbi +19 -0
  168. data/rbi/terminal_shop/models/card_get_response.rbi +25 -0
  169. data/rbi/terminal_shop/models/card_list_params.rbi +19 -0
  170. data/rbi/{lib/terminal-shop → terminal_shop}/models/card_list_response.rbi +7 -7
  171. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart.rbi +51 -29
  172. data/rbi/terminal_shop/models/cart_clear_params.rbi +19 -0
  173. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart_clear_response.rbi +3 -5
  174. data/rbi/terminal_shop/models/cart_convert_params.rbi +19 -0
  175. data/rbi/terminal_shop/models/cart_convert_response.rbi +25 -0
  176. data/rbi/terminal_shop/models/cart_get_params.rbi +19 -0
  177. data/rbi/terminal_shop/models/cart_get_response.rbi +25 -0
  178. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart_set_address_params.rbi +10 -9
  179. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart_set_address_response.rbi +3 -5
  180. data/rbi/terminal_shop/models/cart_set_card_params.rbi +29 -0
  181. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart_set_card_response.rbi +3 -5
  182. data/rbi/{lib/terminal-shop → terminal_shop}/models/cart_set_item_params.rbi +12 -9
  183. data/rbi/terminal_shop/models/cart_set_item_response.rbi +25 -0
  184. data/rbi/terminal_shop/models/email_create_params.rbi +29 -0
  185. data/rbi/{lib/terminal-shop → terminal_shop}/models/email_create_response.rbi +3 -5
  186. data/rbi/{lib/terminal-shop → terminal_shop}/models/order.rbi +149 -36
  187. data/rbi/{lib/terminal-shop → terminal_shop}/models/order_create_params.rbi +14 -9
  188. data/rbi/{lib/terminal-shop → terminal_shop}/models/order_create_response.rbi +6 -6
  189. data/rbi/terminal_shop/models/order_get_params.rbi +19 -0
  190. data/rbi/terminal_shop/models/order_get_response.rbi +25 -0
  191. data/rbi/terminal_shop/models/order_list_params.rbi +19 -0
  192. data/rbi/{lib/terminal-shop → terminal_shop}/models/order_list_response.rbi +7 -7
  193. data/rbi/{lib/terminal-shop → terminal_shop}/models/product.rbi +44 -24
  194. data/rbi/terminal_shop/models/product_get_params.rbi +19 -0
  195. data/rbi/{lib/terminal-shop → terminal_shop}/models/product_get_response.rbi +8 -8
  196. data/rbi/terminal_shop/models/product_list_params.rbi +19 -0
  197. data/rbi/{lib/terminal-shop → terminal_shop}/models/product_list_response.rbi +7 -7
  198. data/rbi/terminal_shop/models/product_variant.rbi +109 -0
  199. data/rbi/{lib/terminal-shop → terminal_shop}/models/profile.rbi +22 -14
  200. data/rbi/terminal_shop/models/profile_me_params.rbi +19 -0
  201. data/rbi/{lib/terminal-shop → terminal_shop}/models/profile_me_response.rbi +8 -8
  202. data/rbi/{lib/terminal-shop → terminal_shop}/models/profile_update_params.rbi +6 -8
  203. data/rbi/{lib/terminal-shop → terminal_shop}/models/profile_update_response.rbi +8 -8
  204. data/rbi/{lib/terminal-shop → terminal_shop}/models/region.rbi +4 -4
  205. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription.rbi +44 -21
  206. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription_create_params.rbi +5 -7
  207. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription_create_response.rbi +3 -5
  208. data/rbi/terminal_shop/models/subscription_delete_params.rbi +19 -0
  209. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription_delete_response.rbi +3 -5
  210. data/rbi/terminal_shop/models/subscription_get_params.rbi +19 -0
  211. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription_get_response.rbi +8 -8
  212. data/rbi/terminal_shop/models/subscription_list_params.rbi +19 -0
  213. data/rbi/{lib/terminal-shop → terminal_shop}/models/subscription_list_response.rbi +7 -7
  214. data/rbi/terminal_shop/models/subscription_update_params.rbi +125 -0
  215. data/rbi/terminal_shop/models/subscription_update_response.rbi +25 -0
  216. data/rbi/{lib/terminal-shop → terminal_shop}/models/token.rbi +11 -7
  217. data/rbi/terminal_shop/models/token_create_params.rbi +19 -0
  218. data/rbi/{lib/terminal-shop → terminal_shop}/models/token_create_response.rbi +15 -14
  219. data/rbi/terminal_shop/models/token_delete_params.rbi +19 -0
  220. data/rbi/{lib/terminal-shop → terminal_shop}/models/token_delete_response.rbi +3 -5
  221. data/rbi/terminal_shop/models/token_get_params.rbi +19 -0
  222. data/rbi/terminal_shop/models/token_get_response.rbi +27 -0
  223. data/rbi/terminal_shop/models/token_list_params.rbi +19 -0
  224. data/rbi/{lib/terminal-shop → terminal_shop}/models/token_list_response.rbi +7 -7
  225. data/rbi/terminal_shop/models/view_init_params.rbi +19 -0
  226. data/rbi/{lib/terminal-shop → terminal_shop}/models/view_init_response.rbi +25 -25
  227. data/rbi/terminal_shop/models.rbi +99 -0
  228. data/rbi/{lib/terminal-shop → terminal_shop}/request_options.rbi +13 -13
  229. data/rbi/{lib/terminal-shop → terminal_shop}/resources/address.rbi +10 -26
  230. data/rbi/terminal_shop/resources/app.rbi +42 -0
  231. data/rbi/terminal_shop/resources/card.rbi +51 -0
  232. data/rbi/terminal_shop/resources/cart.rbi +55 -0
  233. data/rbi/{lib/terminal-shop → terminal_shop}/resources/email.rbi +4 -9
  234. data/rbi/{lib/terminal-shop → terminal_shop}/resources/order.rbi +8 -19
  235. data/rbi/{lib/terminal-shop → terminal_shop}/resources/product.rbi +6 -15
  236. data/rbi/terminal_shop/resources/profile.rbi +22 -0
  237. data/rbi/{lib/terminal-shop → terminal_shop}/resources/subscription.rbi +42 -26
  238. data/rbi/terminal_shop/resources/token.rbi +39 -0
  239. data/rbi/terminal_shop/resources/view.rbi +16 -0
  240. data/rbi/{lib/terminal-shop → terminal_shop}/version.rbi +1 -1
  241. data/sig/{terminal-shop → terminal_shop}/client.rbs +3 -3
  242. data/sig/terminal_shop/errors.rbs +101 -0
  243. data/sig/terminal_shop/file_part.rbs +21 -0
  244. data/sig/terminal_shop/internal/transport/base_client.rbs +116 -0
  245. data/sig/terminal_shop/internal/transport/pooled_net_requester.rbs +41 -0
  246. data/sig/terminal_shop/internal/type/array_of.rbs +45 -0
  247. data/sig/terminal_shop/internal/type/base_model.rbs +96 -0
  248. data/sig/terminal_shop/internal/type/base_page.rbs +24 -0
  249. data/sig/terminal_shop/internal/type/boolean.rbs +23 -0
  250. data/sig/terminal_shop/internal/type/converter.rbs +54 -0
  251. data/sig/terminal_shop/internal/type/enum.rbs +29 -0
  252. data/sig/terminal_shop/internal/type/file_input.rbs +23 -0
  253. data/sig/terminal_shop/internal/type/hash_of.rbs +45 -0
  254. data/sig/terminal_shop/internal/type/request_parameters.rbs +15 -0
  255. data/sig/terminal_shop/internal/type/union.rbs +49 -0
  256. data/sig/terminal_shop/internal/type/unknown.rbs +23 -0
  257. data/sig/terminal_shop/internal/util.rbs +160 -0
  258. data/sig/terminal_shop/internal.rbs +5 -0
  259. data/sig/{terminal-shop → terminal_shop}/models/address.rbs +5 -1
  260. data/sig/{terminal-shop → terminal_shop}/models/address_create_params.rbs +4 -4
  261. data/sig/{terminal-shop → terminal_shop}/models/address_create_response.rbs +1 -1
  262. data/sig/terminal_shop/models/address_delete_params.rbs +15 -0
  263. data/sig/{terminal-shop → terminal_shop}/models/address_delete_response.rbs +1 -1
  264. data/sig/terminal_shop/models/address_get_params.rbs +15 -0
  265. data/sig/{terminal-shop → terminal_shop}/models/address_get_response.rbs +1 -1
  266. data/sig/terminal_shop/models/address_list_params.rbs +15 -0
  267. data/sig/{terminal-shop → terminal_shop}/models/address_list_response.rbs +1 -1
  268. data/sig/{terminal-shop → terminal_shop}/models/app.rbs +1 -1
  269. data/sig/{terminal-shop → terminal_shop}/models/app_create_params.rbs +5 -4
  270. data/sig/{terminal-shop → terminal_shop}/models/app_create_response.rbs +2 -2
  271. data/sig/terminal_shop/models/app_delete_params.rbs +15 -0
  272. data/sig/{terminal-shop → terminal_shop}/models/app_delete_response.rbs +1 -1
  273. data/sig/terminal_shop/models/app_get_params.rbs +15 -0
  274. data/sig/{terminal-shop → terminal_shop}/models/app_get_response.rbs +1 -1
  275. data/sig/terminal_shop/models/app_list_params.rbs +15 -0
  276. data/sig/{terminal-shop → terminal_shop}/models/app_list_response.rbs +1 -1
  277. data/sig/{terminal-shop → terminal_shop}/models/card.rbs +6 -2
  278. data/sig/terminal_shop/models/card_collect_params.rbs +15 -0
  279. data/sig/{terminal-shop → terminal_shop}/models/card_collect_response.rbs +2 -2
  280. data/sig/{terminal-shop → terminal_shop}/models/card_create_params.rbs +4 -4
  281. data/sig/{terminal-shop → terminal_shop}/models/card_create_response.rbs +1 -1
  282. data/sig/terminal_shop/models/card_delete_params.rbs +15 -0
  283. data/sig/{terminal-shop → terminal_shop}/models/card_delete_response.rbs +1 -1
  284. data/sig/terminal_shop/models/card_get_params.rbs +15 -0
  285. data/sig/{terminal-shop → terminal_shop}/models/card_get_response.rbs +1 -1
  286. data/sig/terminal_shop/models/card_list_params.rbs +15 -0
  287. data/sig/{terminal-shop → terminal_shop}/models/card_list_response.rbs +1 -1
  288. data/sig/{terminal-shop → terminal_shop}/models/cart.rbs +4 -4
  289. data/sig/terminal_shop/models/cart_clear_params.rbs +15 -0
  290. data/sig/{terminal-shop → terminal_shop}/models/cart_clear_response.rbs +1 -1
  291. data/sig/terminal_shop/models/cart_convert_params.rbs +15 -0
  292. data/sig/{terminal-shop → terminal_shop}/models/cart_convert_response.rbs +1 -1
  293. data/sig/terminal_shop/models/cart_get_params.rbs +15 -0
  294. data/sig/{terminal-shop → terminal_shop}/models/cart_get_response.rbs +1 -1
  295. data/sig/{terminal-shop → terminal_shop}/models/cart_set_address_params.rbs +4 -4
  296. data/sig/{terminal-shop → terminal_shop}/models/cart_set_address_response.rbs +1 -1
  297. data/sig/{terminal-shop → terminal_shop}/models/cart_set_card_params.rbs +4 -4
  298. data/sig/{terminal-shop → terminal_shop}/models/cart_set_card_response.rbs +1 -1
  299. data/sig/{terminal-shop → terminal_shop}/models/cart_set_item_params.rbs +4 -4
  300. data/sig/{terminal-shop → terminal_shop}/models/cart_set_item_response.rbs +1 -1
  301. data/sig/{terminal-shop → terminal_shop}/models/email_create_params.rbs +4 -4
  302. data/sig/{terminal-shop → terminal_shop}/models/email_create_response.rbs +1 -1
  303. data/sig/{terminal-shop → terminal_shop}/models/order.rbs +51 -6
  304. data/sig/{terminal-shop → terminal_shop}/models/order_create_params.rbs +4 -4
  305. data/sig/{terminal-shop → terminal_shop}/models/order_create_response.rbs +1 -1
  306. data/sig/terminal_shop/models/order_get_params.rbs +15 -0
  307. data/sig/{terminal-shop → terminal_shop}/models/order_get_response.rbs +1 -1
  308. data/sig/terminal_shop/models/order_list_params.rbs +15 -0
  309. data/sig/{terminal-shop → terminal_shop}/models/order_list_response.rbs +1 -1
  310. data/sig/{terminal-shop → terminal_shop}/models/product.rbs +9 -3
  311. data/sig/terminal_shop/models/product_get_params.rbs +15 -0
  312. data/sig/{terminal-shop → terminal_shop}/models/product_get_response.rbs +1 -1
  313. data/sig/terminal_shop/models/product_list_params.rbs +15 -0
  314. data/sig/{terminal-shop → terminal_shop}/models/product_list_response.rbs +1 -1
  315. data/sig/terminal_shop/models/product_variant.rbs +70 -0
  316. data/sig/{terminal-shop → terminal_shop}/models/profile.rbs +2 -2
  317. data/sig/terminal_shop/models/profile_me_params.rbs +15 -0
  318. data/sig/{terminal-shop → terminal_shop}/models/profile_me_response.rbs +1 -1
  319. data/sig/{terminal-shop → terminal_shop}/models/profile_update_params.rbs +5 -4
  320. data/sig/{terminal-shop → terminal_shop}/models/profile_update_response.rbs +1 -1
  321. data/sig/{terminal-shop → terminal_shop}/models/region.rbs +3 -2
  322. data/sig/{terminal-shop → terminal_shop}/models/subscription.rbs +12 -4
  323. data/sig/{terminal-shop → terminal_shop}/models/subscription_create_params.rbs +4 -3
  324. data/sig/{terminal-shop → terminal_shop}/models/subscription_create_response.rbs +1 -1
  325. data/sig/terminal_shop/models/subscription_delete_params.rbs +15 -0
  326. data/sig/{terminal-shop → terminal_shop}/models/subscription_delete_response.rbs +1 -1
  327. data/sig/terminal_shop/models/subscription_get_params.rbs +15 -0
  328. data/sig/{terminal-shop → terminal_shop}/models/subscription_get_response.rbs +1 -1
  329. data/sig/terminal_shop/models/subscription_list_params.rbs +15 -0
  330. data/sig/{terminal-shop → terminal_shop}/models/subscription_list_response.rbs +1 -1
  331. data/sig/terminal_shop/models/subscription_update_params.rbs +71 -0
  332. data/sig/terminal_shop/models/subscription_update_response.rbs +14 -0
  333. data/sig/{terminal-shop → terminal_shop}/models/token.rbs +1 -1
  334. data/sig/terminal_shop/models/token_create_params.rbs +15 -0
  335. data/sig/{terminal-shop → terminal_shop}/models/token_create_response.rbs +2 -2
  336. data/sig/terminal_shop/models/token_delete_params.rbs +15 -0
  337. data/sig/{terminal-shop → terminal_shop}/models/token_delete_response.rbs +1 -1
  338. data/sig/terminal_shop/models/token_get_params.rbs +15 -0
  339. data/sig/{terminal-shop → terminal_shop}/models/token_get_response.rbs +1 -1
  340. data/sig/terminal_shop/models/token_list_params.rbs +15 -0
  341. data/sig/{terminal-shop → terminal_shop}/models/token_list_response.rbs +1 -1
  342. data/sig/terminal_shop/models/view_init_params.rbs +15 -0
  343. data/sig/{terminal-shop → terminal_shop}/models/view_init_response.rbs +2 -2
  344. data/sig/terminal_shop/models.rbs +97 -0
  345. data/sig/{terminal-shop → terminal_shop}/request_options.rbs +1 -1
  346. data/sig/{terminal-shop → terminal_shop}/resources/subscription.rbs +10 -0
  347. data/sig/{terminal-shop → terminal_shop}/version.rbs +1 -1
  348. metadata +359 -341
  349. data/lib/terminal-shop/errors.rb +0 -183
  350. data/lib/terminal-shop/models/address.rb +0 -90
  351. data/lib/terminal-shop/models/address_create_params.rb +0 -86
  352. data/lib/terminal-shop/models/address_create_response.rb +0 -20
  353. data/lib/terminal-shop/models/address_delete_params.rb +0 -18
  354. data/lib/terminal-shop/models/address_delete_response.rb +0 -19
  355. data/lib/terminal-shop/models/address_get_params.rb +0 -18
  356. data/lib/terminal-shop/models/address_list_params.rb +0 -18
  357. data/lib/terminal-shop/models/address_list_response.rb +0 -20
  358. data/lib/terminal-shop/models/app_create_params.rb +0 -30
  359. data/lib/terminal-shop/models/app_delete_params.rb +0 -18
  360. data/lib/terminal-shop/models/app_delete_response.rb +0 -19
  361. data/lib/terminal-shop/models/app_get_params.rb +0 -18
  362. data/lib/terminal-shop/models/app_list_params.rb +0 -18
  363. data/lib/terminal-shop/models/app_list_response.rb +0 -20
  364. data/lib/terminal-shop/models/card.rb +0 -67
  365. data/lib/terminal-shop/models/card_collect_params.rb +0 -18
  366. data/lib/terminal-shop/models/card_collect_response.rb +0 -38
  367. data/lib/terminal-shop/models/card_create_params.rb +0 -26
  368. data/lib/terminal-shop/models/card_create_response.rb +0 -20
  369. data/lib/terminal-shop/models/card_delete_params.rb +0 -18
  370. data/lib/terminal-shop/models/card_delete_response.rb +0 -19
  371. data/lib/terminal-shop/models/card_get_params.rb +0 -18
  372. data/lib/terminal-shop/models/card_list_params.rb +0 -18
  373. data/lib/terminal-shop/models/card_list_response.rb +0 -20
  374. data/lib/terminal-shop/models/cart.rb +0 -178
  375. data/lib/terminal-shop/models/cart_clear_params.rb +0 -18
  376. data/lib/terminal-shop/models/cart_clear_response.rb +0 -19
  377. data/lib/terminal-shop/models/cart_convert_params.rb +0 -18
  378. data/lib/terminal-shop/models/cart_get_params.rb +0 -18
  379. data/lib/terminal-shop/models/cart_set_address_params.rb +0 -25
  380. data/lib/terminal-shop/models/cart_set_address_response.rb +0 -19
  381. data/lib/terminal-shop/models/cart_set_card_params.rb +0 -25
  382. data/lib/terminal-shop/models/cart_set_card_response.rb +0 -19
  383. data/lib/terminal-shop/models/cart_set_item_params.rb +0 -32
  384. data/lib/terminal-shop/models/email_create_params.rb +0 -25
  385. data/lib/terminal-shop/models/email_create_response.rb +0 -19
  386. data/lib/terminal-shop/models/order.rb +0 -257
  387. data/lib/terminal-shop/models/order_create_params.rb +0 -39
  388. data/lib/terminal-shop/models/order_create_response.rb +0 -20
  389. data/lib/terminal-shop/models/order_get_params.rb +0 -18
  390. data/lib/terminal-shop/models/order_list_params.rb +0 -18
  391. data/lib/terminal-shop/models/order_list_response.rb +0 -20
  392. data/lib/terminal-shop/models/product.rb +0 -150
  393. data/lib/terminal-shop/models/product_get_params.rb +0 -18
  394. data/lib/terminal-shop/models/product_list_params.rb +0 -18
  395. data/lib/terminal-shop/models/product_list_response.rb +0 -20
  396. data/lib/terminal-shop/models/product_variant.rb +0 -36
  397. data/lib/terminal-shop/models/profile_me_params.rb +0 -18
  398. data/lib/terminal-shop/models/profile_update_params.rb +0 -30
  399. data/lib/terminal-shop/models/subscription.rb +0 -119
  400. data/lib/terminal-shop/models/subscription_create_params.rb +0 -18
  401. data/lib/terminal-shop/models/subscription_create_response.rb +0 -19
  402. data/lib/terminal-shop/models/subscription_delete_params.rb +0 -18
  403. data/lib/terminal-shop/models/subscription_delete_response.rb +0 -19
  404. data/lib/terminal-shop/models/subscription_get_params.rb +0 -18
  405. data/lib/terminal-shop/models/subscription_list_params.rb +0 -18
  406. data/lib/terminal-shop/models/subscription_list_response.rb +0 -20
  407. data/lib/terminal-shop/models/token.rb +0 -37
  408. data/lib/terminal-shop/models/token_create_params.rb +0 -18
  409. data/lib/terminal-shop/models/token_create_response.rb +0 -42
  410. data/lib/terminal-shop/models/token_delete_params.rb +0 -18
  411. data/lib/terminal-shop/models/token_delete_response.rb +0 -19
  412. data/lib/terminal-shop/models/token_get_params.rb +0 -18
  413. data/lib/terminal-shop/models/token_get_response.rb +0 -21
  414. data/lib/terminal-shop/models/token_list_params.rb +0 -18
  415. data/lib/terminal-shop/models/token_list_response.rb +0 -20
  416. data/lib/terminal-shop/models/view_init_params.rb +0 -18
  417. data/lib/terminal-shop/models/view_init_response.rb +0 -93
  418. data/lib/terminal-shop/resources/subscription.rb +0 -96
  419. data/lib/terminal-shop/transport/base_client.rb +0 -459
  420. data/lib/terminal-shop/transport/pooled_net_requester.rb +0 -182
  421. data/lib/terminal-shop/type/array_of.rb +0 -112
  422. data/lib/terminal-shop/type/base_model.rb +0 -364
  423. data/lib/terminal-shop/type/base_page.rb +0 -61
  424. data/lib/terminal-shop/type/boolean_model.rb +0 -52
  425. data/lib/terminal-shop/type/converter.rb +0 -217
  426. data/lib/terminal-shop/type/enum.rb +0 -101
  427. data/lib/terminal-shop/type/hash_of.rb +0 -138
  428. data/lib/terminal-shop/type/request_parameters.rb +0 -38
  429. data/lib/terminal-shop/type/union.rb +0 -185
  430. data/lib/terminal-shop/type/unknown.rb +0 -56
  431. data/lib/terminal-shop/type.rb +0 -23
  432. data/lib/terminal-shop/util.rb +0 -726
  433. data/lib/terminal-shop.rb +0 -149
  434. data/rbi/lib/terminal-shop/errors.rbi +0 -144
  435. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +0 -21
  436. data/rbi/lib/terminal-shop/models/address_get_params.rbi +0 -21
  437. data/rbi/lib/terminal-shop/models/address_list_params.rbi +0 -21
  438. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +0 -21
  439. data/rbi/lib/terminal-shop/models/app_get_params.rbi +0 -21
  440. data/rbi/lib/terminal-shop/models/app_get_response.rbi +0 -22
  441. data/rbi/lib/terminal-shop/models/app_list_params.rbi +0 -21
  442. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +0 -21
  443. data/rbi/lib/terminal-shop/models/card_create_params.rbi +0 -32
  444. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +0 -21
  445. data/rbi/lib/terminal-shop/models/card_get_params.rbi +0 -21
  446. data/rbi/lib/terminal-shop/models/card_get_response.rbi +0 -22
  447. data/rbi/lib/terminal-shop/models/card_list_params.rbi +0 -21
  448. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +0 -21
  449. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +0 -21
  450. data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +0 -22
  451. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +0 -21
  452. data/rbi/lib/terminal-shop/models/cart_get_response.rbi +0 -22
  453. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +0 -31
  454. data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +0 -22
  455. data/rbi/lib/terminal-shop/models/email_create_params.rbi +0 -31
  456. data/rbi/lib/terminal-shop/models/order_get_params.rbi +0 -21
  457. data/rbi/lib/terminal-shop/models/order_get_response.rbi +0 -22
  458. data/rbi/lib/terminal-shop/models/order_list_params.rbi +0 -21
  459. data/rbi/lib/terminal-shop/models/product_get_params.rbi +0 -21
  460. data/rbi/lib/terminal-shop/models/product_list_params.rbi +0 -21
  461. data/rbi/lib/terminal-shop/models/product_variant.rbi +0 -28
  462. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +0 -21
  463. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +0 -21
  464. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +0 -21
  465. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +0 -21
  466. data/rbi/lib/terminal-shop/models/token_create_params.rbi +0 -21
  467. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +0 -21
  468. data/rbi/lib/terminal-shop/models/token_get_params.rbi +0 -21
  469. data/rbi/lib/terminal-shop/models/token_get_response.rbi +0 -23
  470. data/rbi/lib/terminal-shop/models/token_list_params.rbi +0 -21
  471. data/rbi/lib/terminal-shop/models/view_init_params.rbi +0 -21
  472. data/rbi/lib/terminal-shop/resources/app.rbi +0 -61
  473. data/rbi/lib/terminal-shop/resources/card.rbi +0 -74
  474. data/rbi/lib/terminal-shop/resources/cart.rbi +0 -83
  475. data/rbi/lib/terminal-shop/resources/profile.rbi +0 -31
  476. data/rbi/lib/terminal-shop/resources/token.rbi +0 -57
  477. data/rbi/lib/terminal-shop/resources/view.rbi +0 -20
  478. data/rbi/lib/terminal-shop/transport/base_client.rbi +0 -208
  479. data/rbi/lib/terminal-shop/transport/pooled_net_requester.rbi +0 -64
  480. data/rbi/lib/terminal-shop/type/array_of.rbi +0 -82
  481. data/rbi/lib/terminal-shop/type/base_model.rbi +0 -194
  482. data/rbi/lib/terminal-shop/type/base_page.rbi +0 -38
  483. data/rbi/lib/terminal-shop/type/boolean_model.rbi +0 -41
  484. data/rbi/lib/terminal-shop/type/converter.rbi +0 -101
  485. data/rbi/lib/terminal-shop/type/enum.rbi +0 -58
  486. data/rbi/lib/terminal-shop/type/hash_of.rbi +0 -85
  487. data/rbi/lib/terminal-shop/type/request_parameters.rbi +0 -20
  488. data/rbi/lib/terminal-shop/type/union.rbi +0 -68
  489. data/rbi/lib/terminal-shop/type/unknown.rbi +0 -37
  490. data/rbi/lib/terminal-shop/type.rbi +0 -23
  491. data/rbi/lib/terminal-shop/util.rbi +0 -281
  492. data/sig/terminal-shop/errors.rbs +0 -99
  493. data/sig/terminal-shop/models/address_delete_params.rbs +0 -14
  494. data/sig/terminal-shop/models/address_get_params.rbs +0 -14
  495. data/sig/terminal-shop/models/address_list_params.rbs +0 -14
  496. data/sig/terminal-shop/models/app_delete_params.rbs +0 -14
  497. data/sig/terminal-shop/models/app_get_params.rbs +0 -14
  498. data/sig/terminal-shop/models/app_list_params.rbs +0 -14
  499. data/sig/terminal-shop/models/card_collect_params.rbs +0 -14
  500. data/sig/terminal-shop/models/card_delete_params.rbs +0 -14
  501. data/sig/terminal-shop/models/card_get_params.rbs +0 -14
  502. data/sig/terminal-shop/models/card_list_params.rbs +0 -14
  503. data/sig/terminal-shop/models/cart_clear_params.rbs +0 -14
  504. data/sig/terminal-shop/models/cart_convert_params.rbs +0 -14
  505. data/sig/terminal-shop/models/cart_get_params.rbs +0 -14
  506. data/sig/terminal-shop/models/order_get_params.rbs +0 -14
  507. data/sig/terminal-shop/models/order_list_params.rbs +0 -14
  508. data/sig/terminal-shop/models/product_get_params.rbs +0 -14
  509. data/sig/terminal-shop/models/product_list_params.rbs +0 -14
  510. data/sig/terminal-shop/models/product_variant.rbs +0 -17
  511. data/sig/terminal-shop/models/profile_me_params.rbs +0 -14
  512. data/sig/terminal-shop/models/subscription_delete_params.rbs +0 -14
  513. data/sig/terminal-shop/models/subscription_get_params.rbs +0 -14
  514. data/sig/terminal-shop/models/subscription_list_params.rbs +0 -14
  515. data/sig/terminal-shop/models/token_create_params.rbs +0 -14
  516. data/sig/terminal-shop/models/token_delete_params.rbs +0 -14
  517. data/sig/terminal-shop/models/token_get_params.rbs +0 -14
  518. data/sig/terminal-shop/models/token_list_params.rbs +0 -14
  519. data/sig/terminal-shop/models/view_init_params.rbs +0 -14
  520. data/sig/terminal-shop/transport/base_client.rbs +0 -110
  521. data/sig/terminal-shop/transport/pooled_net_requester.rbs +0 -39
  522. data/sig/terminal-shop/type/array_of.rbs +0 -36
  523. data/sig/terminal-shop/type/base_model.rbs +0 -73
  524. data/sig/terminal-shop/type/base_page.rbs +0 -22
  525. data/sig/terminal-shop/type/boolean_model.rbs +0 -18
  526. data/sig/terminal-shop/type/converter.rbs +0 -42
  527. data/sig/terminal-shop/type/enum.rbs +0 -22
  528. data/sig/terminal-shop/type/hash_of.rbs +0 -36
  529. data/sig/terminal-shop/type/request_parameters.rbs +0 -13
  530. data/sig/terminal-shop/type/union.rbs +0 -40
  531. data/sig/terminal-shop/type/unknown.rbs +0 -18
  532. data/sig/terminal-shop/type.rbs +0 -22
  533. data/sig/terminal-shop/util.rbs +0 -136
  534. /data/sig/{terminal-shop → terminal_shop}/resources/address.rbs +0 -0
  535. /data/sig/{terminal-shop → terminal_shop}/resources/app.rbs +0 -0
  536. /data/sig/{terminal-shop → terminal_shop}/resources/card.rbs +0 -0
  537. /data/sig/{terminal-shop → terminal_shop}/resources/cart.rbs +0 -0
  538. /data/sig/{terminal-shop → terminal_shop}/resources/email.rbs +0 -0
  539. /data/sig/{terminal-shop → terminal_shop}/resources/order.rbs +0 -0
  540. /data/sig/{terminal-shop → terminal_shop}/resources/product.rbs +0 -0
  541. /data/sig/{terminal-shop → terminal_shop}/resources/profile.rbs +0 -0
  542. /data/sig/{terminal-shop → terminal_shop}/resources/token.rbs +0 -0
  543. /data/sig/{terminal-shop → terminal_shop}/resources/view.rbs +0 -0
@@ -0,0 +1,806 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TerminalShop
4
+ module Internal
5
+ # @api private
6
+ module Util
7
+ # @api private
8
+ #
9
+ # @return [Float]
10
+ def self.monotonic_secs = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+
12
+ class << self
13
+ # @api private
14
+ #
15
+ # @return [String]
16
+ def arch
17
+ case (arch = RbConfig::CONFIG["arch"])&.downcase
18
+ in nil
19
+ "unknown"
20
+ in /aarch64|arm64/
21
+ "arm64"
22
+ in /x86_64/
23
+ "x64"
24
+ in /arm/
25
+ "arm"
26
+ else
27
+ "other:#{arch}"
28
+ end
29
+ end
30
+
31
+ # @api private
32
+ #
33
+ # @return [String]
34
+ def os
35
+ case (host = RbConfig::CONFIG["host_os"])&.downcase
36
+ in nil
37
+ "Unknown"
38
+ in /linux/
39
+ "Linux"
40
+ in /darwin/
41
+ "MacOS"
42
+ in /freebsd/
43
+ "FreeBSD"
44
+ in /openbsd/
45
+ "OpenBSD"
46
+ in /mswin|mingw|cygwin|ucrt/
47
+ "Windows"
48
+ else
49
+ "Other:#{host}"
50
+ end
51
+ end
52
+ end
53
+
54
+ class << self
55
+ # @api private
56
+ #
57
+ # @param input [Object]
58
+ #
59
+ # @return [Boolean]
60
+ def primitive?(input)
61
+ case input
62
+ in true | false | Numeric | Symbol | String
63
+ true
64
+ else
65
+ false
66
+ end
67
+ end
68
+
69
+ # @api private
70
+ #
71
+ # @param input [String, Boolean]
72
+ #
73
+ # @return [Boolean, Object]
74
+ def coerce_boolean(input)
75
+ case input.is_a?(String) ? input.downcase : input
76
+ in "true"
77
+ true
78
+ in "false"
79
+ false
80
+ else
81
+ input
82
+ end
83
+ end
84
+
85
+ # @api private
86
+ #
87
+ # @param input [String, Boolean]
88
+ #
89
+ # @raise [ArgumentError]
90
+ # @return [Boolean, nil]
91
+ def coerce_boolean!(input)
92
+ case coerce_boolean(input)
93
+ in true | false | nil => coerced
94
+ coerced
95
+ else
96
+ raise ArgumentError.new("Unable to coerce #{input.inspect} into boolean value")
97
+ end
98
+ end
99
+
100
+ # @api private
101
+ #
102
+ # @param input [String, Integer]
103
+ #
104
+ # @return [Integer, Object]
105
+ def coerce_integer(input)
106
+ Integer(input, exception: false) || input
107
+ end
108
+
109
+ # @api private
110
+ #
111
+ # @param input [String, Integer, Float]
112
+ #
113
+ # @return [Float, Object]
114
+ def coerce_float(input)
115
+ Float(input, exception: false) || input
116
+ end
117
+
118
+ # @api private
119
+ #
120
+ # @param input [Object]
121
+ #
122
+ # @return [Hash{Object=>Object}, Object]
123
+ def coerce_hash(input)
124
+ case input
125
+ in NilClass | Array | Set | Enumerator | StringIO | IO
126
+ input
127
+ else
128
+ input.respond_to?(:to_h) ? input.to_h : input
129
+ end
130
+ end
131
+
132
+ # @api private
133
+ #
134
+ # @param input [Object]
135
+ #
136
+ # @raise [ArgumentError]
137
+ # @return [Hash{Object=>Object}, nil]
138
+ def coerce_hash!(input)
139
+ case coerce_hash(input)
140
+ in Hash | nil => coerced
141
+ coerced
142
+ else
143
+ message = "Expected a #{Hash} or #{TerminalShop::Internal::Type::BaseModel}, got #{data.inspect}"
144
+ raise ArgumentError.new(message)
145
+ end
146
+ end
147
+ end
148
+
149
+ class << self
150
+ # @api private
151
+ #
152
+ # @param lhs [Object]
153
+ # @param rhs [Object]
154
+ # @param concat [Boolean]
155
+ #
156
+ # @return [Object]
157
+ private def deep_merge_lr(lhs, rhs, concat: false)
158
+ case [lhs, rhs, concat]
159
+ in [Hash, Hash, _]
160
+ lhs.merge(rhs) { deep_merge_lr(_2, _3, concat: concat) }
161
+ in [Array, Array, true]
162
+ lhs.concat(rhs)
163
+ else
164
+ rhs
165
+ end
166
+ end
167
+
168
+ # @api private
169
+ #
170
+ # Recursively merge one hash with another. If the values at a given key are not
171
+ # both hashes, just take the new value.
172
+ #
173
+ # @param values [Array<Object>]
174
+ #
175
+ # @param sentinel [Object, nil] the value to return if no values are provided.
176
+ #
177
+ # @param concat [Boolean] whether to merge sequences by concatenation.
178
+ #
179
+ # @return [Object]
180
+ def deep_merge(*values, sentinel: nil, concat: false)
181
+ case values
182
+ in [value, *values]
183
+ values.reduce(value) do |acc, val|
184
+ deep_merge_lr(acc, val, concat: concat)
185
+ end
186
+ else
187
+ sentinel
188
+ end
189
+ end
190
+
191
+ # @api private
192
+ #
193
+ # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
194
+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
195
+ # @param blk [Proc, nil]
196
+ #
197
+ # @return [Object, nil]
198
+ def dig(data, pick, &blk)
199
+ case [data, pick]
200
+ in [_, nil]
201
+ data
202
+ in [Hash, Symbol] | [Array, Integer]
203
+ data.fetch(pick) { blk&.call }
204
+ in [Hash | Array, Array]
205
+ pick.reduce(data) do |acc, key|
206
+ case acc
207
+ in Hash if acc.key?(key)
208
+ acc.fetch(key)
209
+ in Array if key.is_a?(Integer) && key < acc.length
210
+ acc[key]
211
+ else
212
+ return blk&.call
213
+ end
214
+ end
215
+ in [_, Proc]
216
+ pick.call(data)
217
+ else
218
+ blk&.call
219
+ end
220
+ end
221
+ end
222
+
223
+ class << self
224
+ # @api private
225
+ #
226
+ # @param uri [URI::Generic]
227
+ #
228
+ # @return [String]
229
+ def uri_origin(uri)
230
+ "#{uri.scheme}://#{uri.host}#{uri.port == uri.default_port ? '' : ":#{uri.port}"}"
231
+ end
232
+
233
+ # @api private
234
+ #
235
+ # @param path [String, Array<String>]
236
+ #
237
+ # @return [String]
238
+ def interpolate_path(path)
239
+ case path
240
+ in String
241
+ path
242
+ in []
243
+ ""
244
+ in [String => p, *interpolations]
245
+ encoded = interpolations.map { ERB::Util.url_encode(_1) }
246
+ format(p, *encoded)
247
+ end
248
+ end
249
+ end
250
+
251
+ class << self
252
+ # @api private
253
+ #
254
+ # @param query [String, nil]
255
+ #
256
+ # @return [Hash{String=>Array<String>}]
257
+ def decode_query(query)
258
+ CGI.parse(query.to_s)
259
+ end
260
+
261
+ # @api private
262
+ #
263
+ # @param query [Hash{String=>Array<String>, String, nil}, nil]
264
+ #
265
+ # @return [String, nil]
266
+ def encode_query(query)
267
+ query.to_h.empty? ? nil : URI.encode_www_form(query)
268
+ end
269
+ end
270
+
271
+ class << self
272
+ # @api private
273
+ #
274
+ # @param url [URI::Generic, String]
275
+ #
276
+ # @return [Hash{Symbol=>String, Integer, nil}]
277
+ def parse_uri(url)
278
+ parsed = URI::Generic.component.zip(URI.split(url)).to_h
279
+ {**parsed, query: decode_query(parsed.fetch(:query))}
280
+ end
281
+
282
+ # @api private
283
+ #
284
+ # @param parsed [Hash{Symbol=>String, Integer, nil}] .
285
+ #
286
+ # @option parsed [String, nil] :scheme
287
+ #
288
+ # @option parsed [String, nil] :host
289
+ #
290
+ # @option parsed [Integer, nil] :port
291
+ #
292
+ # @option parsed [String, nil] :path
293
+ #
294
+ # @option parsed [Hash{String=>Array<String>}] :query
295
+ #
296
+ # @return [URI::Generic]
297
+ def unparse_uri(parsed)
298
+ URI::Generic.build(**parsed, query: encode_query(parsed.fetch(:query)))
299
+ end
300
+
301
+ # @api private
302
+ #
303
+ # @param lhs [Hash{Symbol=>String, Integer, nil}] .
304
+ #
305
+ # @option lhs [String, nil] :scheme
306
+ #
307
+ # @option lhs [String, nil] :host
308
+ #
309
+ # @option lhs [Integer, nil] :port
310
+ #
311
+ # @option lhs [String, nil] :path
312
+ #
313
+ # @option lhs [Hash{String=>Array<String>}] :query
314
+ #
315
+ # @param rhs [Hash{Symbol=>String, Integer, nil}] .
316
+ #
317
+ # @option rhs [String, nil] :scheme
318
+ #
319
+ # @option rhs [String, nil] :host
320
+ #
321
+ # @option rhs [Integer, nil] :port
322
+ #
323
+ # @option rhs [String, nil] :path
324
+ #
325
+ # @option rhs [Hash{String=>Array<String>}] :query
326
+ #
327
+ # @return [URI::Generic]
328
+ def join_parsed_uri(lhs, rhs)
329
+ base_path, base_query = lhs.fetch_values(:path, :query)
330
+ slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
331
+
332
+ parsed_path, parsed_query = parse_uri(rhs.fetch(:path)).fetch_values(:path, :query)
333
+ override = URI::Generic.build(**rhs.slice(:scheme, :host, :port), path: parsed_path)
334
+
335
+ joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
336
+ query = deep_merge(
337
+ joined.path == base_path ? base_query : {},
338
+ parsed_query,
339
+ rhs[:query].to_h,
340
+ concat: true
341
+ )
342
+
343
+ joined.query = encode_query(query)
344
+ joined
345
+ end
346
+ end
347
+
348
+ class << self
349
+ # @api private
350
+ #
351
+ # @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
352
+ #
353
+ # @return [Hash{String=>String}]
354
+ def normalized_headers(*headers)
355
+ {}.merge(*headers.compact).to_h do |key, val|
356
+ value =
357
+ case val
358
+ in Array
359
+ val.filter_map { _1&.to_s&.strip }.join(", ")
360
+ else
361
+ val&.to_s&.strip
362
+ end
363
+ [key.downcase, value]
364
+ end
365
+ end
366
+ end
367
+
368
+ # @api private
369
+ #
370
+ # An adapter that satisfies the IO interface required by `::IO.copy_stream`
371
+ class ReadIOAdapter
372
+ # @api private
373
+ #
374
+ # @return [Boolean, nil]
375
+ def close? = @closing
376
+
377
+ # @api private
378
+ def close
379
+ case @stream
380
+ in Enumerator
381
+ TerminalShop::Internal::Util.close_fused!(@stream)
382
+ in IO if close?
383
+ @stream.close
384
+ else
385
+ end
386
+ end
387
+
388
+ # @api private
389
+ #
390
+ # @param max_len [Integer, nil]
391
+ #
392
+ # @return [String]
393
+ private def read_enum(max_len)
394
+ case max_len
395
+ in nil
396
+ @stream.to_a.join
397
+ in Integer
398
+ @buf << @stream.next while @buf.length < max_len
399
+ @buf.slice!(..max_len)
400
+ end
401
+ rescue StopIteration
402
+ @stream = nil
403
+ @buf.slice!(0..)
404
+ end
405
+
406
+ # @api private
407
+ #
408
+ # @param max_len [Integer, nil]
409
+ # @param out_string [String, nil]
410
+ #
411
+ # @return [String, nil]
412
+ def read(max_len = nil, out_string = nil)
413
+ case @stream
414
+ in nil
415
+ nil
416
+ in IO | StringIO
417
+ @stream.read(max_len, out_string)
418
+ in Enumerator
419
+ read = read_enum(max_len)
420
+ case out_string
421
+ in String
422
+ out_string.replace(read)
423
+ in nil
424
+ read
425
+ end
426
+ end
427
+ .tap(&@blk)
428
+ end
429
+
430
+ # @api private
431
+ #
432
+ # @param src [String, Pathname, StringIO, Enumerable<String>]
433
+ # @param blk [Proc]
434
+ #
435
+ # @yieldparam [String]
436
+ def initialize(src, &blk)
437
+ @stream =
438
+ case src
439
+ in String
440
+ StringIO.new(src)
441
+ in Pathname
442
+ @closing = true
443
+ src.open(binmode: true)
444
+ else
445
+ src
446
+ end
447
+ @buf = String.new
448
+ @blk = blk
449
+ end
450
+ end
451
+
452
+ class << self
453
+ # @param blk [Proc]
454
+ #
455
+ # @yieldparam [Enumerator::Yielder]
456
+ # @return [Enumerable<String>]
457
+ def writable_enum(&blk)
458
+ Enumerator.new do |y|
459
+ buf = String.new
460
+ y.define_singleton_method(:write) do
461
+ self << buf.replace(_1)
462
+ buf.bytesize
463
+ end
464
+
465
+ blk.call(y)
466
+ end
467
+ end
468
+ end
469
+
470
+ # @type [Regexp]
471
+ JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
472
+ # @type [Regexp]
473
+ JSONL_CONTENT = %r{^application/(:?x-(?:n|l)djson)|(:?(?:x-)?jsonl)}
474
+
475
+ class << self
476
+ # @api private
477
+ #
478
+ # @param y [Enumerator::Yielder]
479
+ # @param val [Object]
480
+ # @param closing [Array<Proc>]
481
+ # @param content_type [String, nil]
482
+ private def write_multipart_content(y, val:, closing:, content_type: nil)
483
+ content_type ||= "application/octet-stream"
484
+
485
+ case val
486
+ in TerminalShop::FilePart
487
+ return write_multipart_content(
488
+ y,
489
+ val: val.content,
490
+ closing: closing,
491
+ content_type: val.content_type
492
+ )
493
+ in Pathname
494
+ y << "Content-Type: #{content_type}\r\n\r\n"
495
+ io = val.open(binmode: true)
496
+ closing << io.method(:close)
497
+ IO.copy_stream(io, y)
498
+ in IO
499
+ y << "Content-Type: #{content_type}\r\n\r\n"
500
+ IO.copy_stream(val, y)
501
+ in StringIO
502
+ y << "Content-Type: #{content_type}\r\n\r\n"
503
+ y << val.string
504
+ in String
505
+ y << "Content-Type: #{content_type}\r\n\r\n"
506
+ y << val.to_s
507
+ in -> { primitive?(_1) }
508
+ y << "Content-Type: text/plain\r\n\r\n"
509
+ y << val.to_s
510
+ else
511
+ y << "Content-Type: application/json\r\n\r\n"
512
+ y << JSON.generate(val)
513
+ end
514
+ y << "\r\n"
515
+ end
516
+
517
+ # @api private
518
+ #
519
+ # @param y [Enumerator::Yielder]
520
+ # @param boundary [String]
521
+ # @param key [Symbol, String]
522
+ # @param val [Object]
523
+ # @param closing [Array<Proc>]
524
+ private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
525
+ y << "--#{boundary}\r\n"
526
+ y << "Content-Disposition: form-data"
527
+
528
+ unless key.nil?
529
+ name = ERB::Util.url_encode(key.to_s)
530
+ y << "; name=\"#{name}\""
531
+ end
532
+
533
+ case val
534
+ in TerminalShop::FilePart unless val.filename.nil?
535
+ filename = ERB::Util.url_encode(val.filename)
536
+ y << "; filename=\"#{filename}\""
537
+ in Pathname | IO
538
+ filename = ERB::Util.url_encode(File.basename(val.to_path))
539
+ y << "; filename=\"#{filename}\""
540
+ else
541
+ end
542
+ y << "\r\n"
543
+
544
+ write_multipart_content(y, val: val, closing: closing)
545
+ end
546
+
547
+ # @api private
548
+ #
549
+ # @param body [Object]
550
+ #
551
+ # @return [Array(String, Enumerable<String>)]
552
+ private def encode_multipart_streaming(body)
553
+ boundary = SecureRandom.urlsafe_base64(60)
554
+
555
+ closing = []
556
+ strio = writable_enum do |y|
557
+ case body
558
+ in Hash
559
+ body.each do |key, val|
560
+ case val
561
+ in Array if val.all? { primitive?(_1) }
562
+ val.each do |v|
563
+ write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
564
+ end
565
+ else
566
+ write_multipart_chunk(y, boundary: boundary, key: key, val: val, closing: closing)
567
+ end
568
+ end
569
+ else
570
+ write_multipart_chunk(y, boundary: boundary, key: nil, val: body, closing: closing)
571
+ end
572
+ y << "--#{boundary}--\r\n"
573
+ end
574
+
575
+ fused_io = fused_enum(strio) { closing.each(&:call) }
576
+ [boundary, fused_io]
577
+ end
578
+
579
+ # @api private
580
+ #
581
+ # @param headers [Hash{String=>String}]
582
+ # @param body [Object]
583
+ #
584
+ # @return [Object]
585
+ def encode_content(headers, body)
586
+ content_type = headers["content-type"]
587
+ case [content_type, body]
588
+ in [TerminalShop::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
589
+ [headers, JSON.generate(body)]
590
+ in [TerminalShop::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(TerminalShop::Internal::Type::FileInput)
591
+ [headers, body.lazy.map { JSON.generate(_1) }]
592
+ in [%r{^multipart/form-data}, Hash | TerminalShop::Internal::Type::FileInput]
593
+ boundary, strio = encode_multipart_streaming(body)
594
+ headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
595
+ [headers, strio]
596
+ in [_, Symbol | Numeric]
597
+ [headers, body.to_s]
598
+ in [_, StringIO]
599
+ [headers, body.string]
600
+ in [_, TerminalShop::FilePart]
601
+ [headers, body.content]
602
+ else
603
+ [headers, body]
604
+ end
605
+ end
606
+
607
+ # @api private
608
+ #
609
+ # https://www.iana.org/assignments/character-sets/character-sets.xhtml
610
+ #
611
+ # @param content_type [String]
612
+ # @param text [String]
613
+ def force_charset!(content_type, text:)
614
+ charset = /charset=([^;\s]+)/.match(content_type)&.captures&.first
615
+
616
+ return unless charset
617
+
618
+ begin
619
+ encoding = Encoding.find(charset)
620
+ text.force_encoding(encoding)
621
+ rescue ArgumentError
622
+ nil
623
+ end
624
+ end
625
+
626
+ # @api private
627
+ #
628
+ # Assumes each chunk in stream has `Encoding::BINARY`.
629
+ #
630
+ # @param headers [Hash{String=>String}, Net::HTTPHeader]
631
+ # @param stream [Enumerable<String>]
632
+ # @param suppress_error [Boolean]
633
+ #
634
+ # @raise [JSON::ParserError]
635
+ # @return [Object]
636
+ def decode_content(headers, stream:, suppress_error: false)
637
+ case (content_type = headers["content-type"])
638
+ in TerminalShop::Internal::Util::JSON_CONTENT
639
+ json = stream.to_a.join
640
+ begin
641
+ JSON.parse(json, symbolize_names: true)
642
+ rescue JSON::ParserError => e
643
+ raise e unless suppress_error
644
+ json
645
+ end
646
+ in TerminalShop::Internal::Util::JSONL_CONTENT
647
+ lines = decode_lines(stream)
648
+ chain_fused(lines) do |y|
649
+ lines.each { y << JSON.parse(_1, symbolize_names: true) }
650
+ end
651
+ in %r{^text/event-stream}
652
+ lines = decode_lines(stream)
653
+ decode_sse(lines)
654
+ else
655
+ text = stream.to_a.join
656
+ force_charset!(content_type, text: text)
657
+ StringIO.new(text)
658
+ end
659
+ end
660
+ end
661
+
662
+ class << self
663
+ # @api private
664
+ #
665
+ # https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
666
+ #
667
+ # @param enum [Enumerable<Object>]
668
+ # @param external [Boolean]
669
+ # @param close [Proc]
670
+ #
671
+ # @return [Enumerable<Object>]
672
+ def fused_enum(enum, external: false, &close)
673
+ fused = false
674
+ iter = Enumerator.new do |y|
675
+ next if fused
676
+
677
+ fused = true
678
+ if external
679
+ loop { y << enum.next }
680
+ else
681
+ enum.each(&y)
682
+ end
683
+ ensure
684
+ close&.call
685
+ close = nil
686
+ end
687
+
688
+ iter.define_singleton_method(:rewind) do
689
+ fused = true
690
+ self
691
+ end
692
+ iter
693
+ end
694
+
695
+ # @api private
696
+ #
697
+ # @param enum [Enumerable<Object>, nil]
698
+ def close_fused!(enum)
699
+ return unless enum.is_a?(Enumerator)
700
+
701
+ # rubocop:disable Lint/UnreachableLoop
702
+ enum.rewind.each { break }
703
+ # rubocop:enable Lint/UnreachableLoop
704
+ end
705
+
706
+ # @api private
707
+ #
708
+ # @param enum [Enumerable<Object>, nil]
709
+ # @param blk [Proc]
710
+ #
711
+ # @yieldparam [Enumerator::Yielder]
712
+ # @return [Enumerable<Object>]
713
+ def chain_fused(enum, &blk)
714
+ iter = Enumerator.new { blk.call(_1) }
715
+ fused_enum(iter) { close_fused!(enum) }
716
+ end
717
+ end
718
+
719
+ class << self
720
+ # @api private
721
+ #
722
+ # Assumes Strings have been forced into having `Encoding::BINARY`.
723
+ #
724
+ # This decoder is responsible for reassembling lines split across multiple
725
+ # fragments.
726
+ #
727
+ # @param enum [Enumerable<String>]
728
+ #
729
+ # @return [Enumerable<String>]
730
+ def decode_lines(enum)
731
+ re = /(\r\n|\r|\n)/
732
+ buffer = String.new
733
+ cr_seen = nil
734
+
735
+ chain_fused(enum) do |y|
736
+ enum.each do |row|
737
+ offset = buffer.bytesize
738
+ buffer << row
739
+ while (match = re.match(buffer, cr_seen&.to_i || offset))
740
+ case [match.captures.first, cr_seen]
741
+ in ["\r", nil]
742
+ cr_seen = match.end(1)
743
+ next
744
+ in ["\r" | "\r\n", Integer]
745
+ y << buffer.slice!(..(cr_seen.pred))
746
+ else
747
+ y << buffer.slice!(..(match.end(1).pred))
748
+ end
749
+ offset = 0
750
+ cr_seen = nil
751
+ end
752
+ end
753
+
754
+ y << buffer.slice!(..(cr_seen.pred)) unless cr_seen.nil?
755
+ y << buffer unless buffer.empty?
756
+ end
757
+ end
758
+
759
+ # @api private
760
+ #
761
+ # https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
762
+ #
763
+ # Assumes that `lines` has been decoded with `#decode_lines`.
764
+ #
765
+ # @param lines [Enumerable<String>]
766
+ #
767
+ # @return [Enumerable<Hash{Symbol=>Object}>]
768
+ def decode_sse(lines)
769
+ # rubocop:disable Metrics/BlockLength
770
+ chain_fused(lines) do |y|
771
+ blank = {event: nil, data: nil, id: nil, retry: nil}
772
+ current = {}
773
+
774
+ lines.each do |line|
775
+ case line.sub(/\R$/, "")
776
+ in ""
777
+ next if current.empty?
778
+ y << {**blank, **current}
779
+ current = {}
780
+ in /^:/
781
+ next
782
+ in /^([^:]+):\s?(.*)$/
783
+ field, value = Regexp.last_match.captures
784
+ case field
785
+ in "event"
786
+ current.merge!(event: value)
787
+ in "data"
788
+ (current[:data] ||= String.new) << (value << "\n")
789
+ in "id" unless value.include?("\0")
790
+ current.merge!(id: value)
791
+ in "retry" if /^\d+$/ =~ value
792
+ current.merge!(retry: Integer(value))
793
+ else
794
+ end
795
+ else
796
+ end
797
+ end
798
+ # rubocop:enable Metrics/BlockLength
799
+
800
+ y << {**blank, **current} unless current.empty?
801
+ end
802
+ end
803
+ end
804
+ end
805
+ end
806
+ end