terminal-shop 2.1.2 → 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 +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 +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,790 @@
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
+ end
132
+
133
+ class << self
134
+ # @api private
135
+ #
136
+ # @param lhs [Object]
137
+ # @param rhs [Object]
138
+ # @param concat [Boolean]
139
+ #
140
+ # @return [Object]
141
+ private def deep_merge_lr(lhs, rhs, concat: false)
142
+ case [lhs, rhs, concat]
143
+ in [Hash, Hash, _]
144
+ lhs.merge(rhs) { deep_merge_lr(_2, _3, concat: concat) }
145
+ in [Array, Array, true]
146
+ lhs.concat(rhs)
147
+ else
148
+ rhs
149
+ end
150
+ end
151
+
152
+ # @api private
153
+ #
154
+ # Recursively merge one hash with another. If the values at a given key are not
155
+ # both hashes, just take the new value.
156
+ #
157
+ # @param values [Array<Object>]
158
+ #
159
+ # @param sentinel [Object, nil] the value to return if no values are provided.
160
+ #
161
+ # @param concat [Boolean] whether to merge sequences by concatenation.
162
+ #
163
+ # @return [Object]
164
+ def deep_merge(*values, sentinel: nil, concat: false)
165
+ case values
166
+ in [value, *values]
167
+ values.reduce(value) do |acc, val|
168
+ deep_merge_lr(acc, val, concat: concat)
169
+ end
170
+ else
171
+ sentinel
172
+ end
173
+ end
174
+
175
+ # @api private
176
+ #
177
+ # @param data [Hash{Symbol=>Object}, Array<Object>, Object]
178
+ # @param pick [Symbol, Integer, Array<Symbol, Integer>, Proc, nil]
179
+ # @param blk [Proc, nil]
180
+ #
181
+ # @return [Object, nil]
182
+ def dig(data, pick, &blk)
183
+ case [data, pick]
184
+ in [_, nil]
185
+ data
186
+ in [Hash, Symbol] | [Array, Integer]
187
+ data.fetch(pick) { blk&.call }
188
+ in [Hash | Array, Array]
189
+ pick.reduce(data) do |acc, key|
190
+ case acc
191
+ in Hash if acc.key?(key)
192
+ acc.fetch(key)
193
+ in Array if key.is_a?(Integer) && key < acc.length
194
+ acc[key]
195
+ else
196
+ return blk&.call
197
+ end
198
+ end
199
+ in [_, Proc]
200
+ pick.call(data)
201
+ else
202
+ blk&.call
203
+ end
204
+ end
205
+ end
206
+
207
+ class << self
208
+ # @api private
209
+ #
210
+ # @param uri [URI::Generic]
211
+ #
212
+ # @return [String]
213
+ def uri_origin(uri)
214
+ "#{uri.scheme}://#{uri.host}#{uri.port == uri.default_port ? '' : ":#{uri.port}"}"
215
+ end
216
+
217
+ # @api private
218
+ #
219
+ # @param path [String, Array<String>]
220
+ #
221
+ # @return [String]
222
+ def interpolate_path(path)
223
+ case path
224
+ in String
225
+ path
226
+ in []
227
+ ""
228
+ in [String => p, *interpolations]
229
+ encoded = interpolations.map { ERB::Util.url_encode(_1) }
230
+ format(p, *encoded)
231
+ end
232
+ end
233
+ end
234
+
235
+ class << self
236
+ # @api private
237
+ #
238
+ # @param query [String, nil]
239
+ #
240
+ # @return [Hash{String=>Array<String>}]
241
+ def decode_query(query)
242
+ CGI.parse(query.to_s)
243
+ end
244
+
245
+ # @api private
246
+ #
247
+ # @param query [Hash{String=>Array<String>, String, nil}, nil]
248
+ #
249
+ # @return [String, nil]
250
+ def encode_query(query)
251
+ query.to_h.empty? ? nil : URI.encode_www_form(query)
252
+ end
253
+ end
254
+
255
+ class << self
256
+ # @api private
257
+ #
258
+ # @param url [URI::Generic, String]
259
+ #
260
+ # @return [Hash{Symbol=>String, Integer, nil}]
261
+ def parse_uri(url)
262
+ parsed = URI::Generic.component.zip(URI.split(url)).to_h
263
+ {**parsed, query: decode_query(parsed.fetch(:query))}
264
+ end
265
+
266
+ # @api private
267
+ #
268
+ # @param parsed [Hash{Symbol=>String, Integer, nil}] .
269
+ #
270
+ # @option parsed [String, nil] :scheme
271
+ #
272
+ # @option parsed [String, nil] :host
273
+ #
274
+ # @option parsed [Integer, nil] :port
275
+ #
276
+ # @option parsed [String, nil] :path
277
+ #
278
+ # @option parsed [Hash{String=>Array<String>}] :query
279
+ #
280
+ # @return [URI::Generic]
281
+ def unparse_uri(parsed)
282
+ URI::Generic.build(**parsed, query: encode_query(parsed.fetch(:query)))
283
+ end
284
+
285
+ # @api private
286
+ #
287
+ # @param lhs [Hash{Symbol=>String, Integer, nil}] .
288
+ #
289
+ # @option lhs [String, nil] :scheme
290
+ #
291
+ # @option lhs [String, nil] :host
292
+ #
293
+ # @option lhs [Integer, nil] :port
294
+ #
295
+ # @option lhs [String, nil] :path
296
+ #
297
+ # @option lhs [Hash{String=>Array<String>}] :query
298
+ #
299
+ # @param rhs [Hash{Symbol=>String, Integer, nil}] .
300
+ #
301
+ # @option rhs [String, nil] :scheme
302
+ #
303
+ # @option rhs [String, nil] :host
304
+ #
305
+ # @option rhs [Integer, nil] :port
306
+ #
307
+ # @option rhs [String, nil] :path
308
+ #
309
+ # @option rhs [Hash{String=>Array<String>}] :query
310
+ #
311
+ # @return [URI::Generic]
312
+ def join_parsed_uri(lhs, rhs)
313
+ base_path, base_query = lhs.fetch_values(:path, :query)
314
+ slashed = base_path.end_with?("/") ? base_path : "#{base_path}/"
315
+
316
+ parsed_path, parsed_query = parse_uri(rhs.fetch(:path)).fetch_values(:path, :query)
317
+ override = URI::Generic.build(**rhs.slice(:scheme, :host, :port), path: parsed_path)
318
+
319
+ joined = URI.join(URI::Generic.build(lhs.except(:path, :query)), slashed, override)
320
+ query = deep_merge(
321
+ joined.path == base_path ? base_query : {},
322
+ parsed_query,
323
+ rhs[:query].to_h,
324
+ concat: true
325
+ )
326
+
327
+ joined.query = encode_query(query)
328
+ joined
329
+ end
330
+ end
331
+
332
+ class << self
333
+ # @api private
334
+ #
335
+ # @param headers [Hash{String=>String, Integer, Array<String, Integer, nil>, nil}]
336
+ #
337
+ # @return [Hash{String=>String}]
338
+ def normalized_headers(*headers)
339
+ {}.merge(*headers.compact).to_h do |key, val|
340
+ value =
341
+ case val
342
+ in Array
343
+ val.filter_map { _1&.to_s&.strip }.join(", ")
344
+ else
345
+ val&.to_s&.strip
346
+ end
347
+ [key.downcase, value]
348
+ end
349
+ end
350
+ end
351
+
352
+ # @api private
353
+ #
354
+ # An adapter that satisfies the IO interface required by `::IO.copy_stream`
355
+ class ReadIOAdapter
356
+ # @api private
357
+ #
358
+ # @return [Boolean, nil]
359
+ def close? = @closing
360
+
361
+ # @api private
362
+ def close
363
+ case @stream
364
+ in Enumerator
365
+ TerminalShop::Internal::Util.close_fused!(@stream)
366
+ in IO if close?
367
+ @stream.close
368
+ else
369
+ end
370
+ end
371
+
372
+ # @api private
373
+ #
374
+ # @param max_len [Integer, nil]
375
+ #
376
+ # @return [String]
377
+ private def read_enum(max_len)
378
+ case max_len
379
+ in nil
380
+ @stream.to_a.join
381
+ in Integer
382
+ @buf << @stream.next while @buf.length < max_len
383
+ @buf.slice!(..max_len)
384
+ end
385
+ rescue StopIteration
386
+ @stream = nil
387
+ @buf.slice!(0..)
388
+ end
389
+
390
+ # @api private
391
+ #
392
+ # @param max_len [Integer, nil]
393
+ # @param out_string [String, nil]
394
+ #
395
+ # @return [String, nil]
396
+ def read(max_len = nil, out_string = nil)
397
+ case @stream
398
+ in nil
399
+ nil
400
+ in IO | StringIO
401
+ @stream.read(max_len, out_string)
402
+ in Enumerator
403
+ read = read_enum(max_len)
404
+ case out_string
405
+ in String
406
+ out_string.replace(read)
407
+ in nil
408
+ read
409
+ end
410
+ end
411
+ .tap(&@blk)
412
+ end
413
+
414
+ # @api private
415
+ #
416
+ # @param src [String, Pathname, StringIO, Enumerable<String>]
417
+ # @param blk [Proc]
418
+ #
419
+ # @yieldparam [String]
420
+ def initialize(src, &blk)
421
+ @stream =
422
+ case src
423
+ in String
424
+ StringIO.new(src)
425
+ in Pathname
426
+ @closing = true
427
+ src.open(binmode: true)
428
+ else
429
+ src
430
+ end
431
+ @buf = String.new
432
+ @blk = blk
433
+ end
434
+ end
435
+
436
+ class << self
437
+ # @param blk [Proc]
438
+ #
439
+ # @yieldparam [Enumerator::Yielder]
440
+ # @return [Enumerable<String>]
441
+ def writable_enum(&blk)
442
+ Enumerator.new do |y|
443
+ buf = String.new
444
+ y.define_singleton_method(:write) do
445
+ self << buf.replace(_1)
446
+ buf.bytesize
447
+ end
448
+
449
+ blk.call(y)
450
+ end
451
+ end
452
+ end
453
+
454
+ # @type [Regexp]
455
+ JSON_CONTENT = %r{^application/(?:vnd(?:\.[^.]+)*\+)?json(?!l)}
456
+ # @type [Regexp]
457
+ JSONL_CONTENT = %r{^application/(?:x-)?jsonl}
458
+
459
+ class << self
460
+ # @api private
461
+ #
462
+ # @param y [Enumerator::Yielder]
463
+ # @param val [Object]
464
+ # @param closing [Array<Proc>]
465
+ # @param content_type [String, nil]
466
+ private def write_multipart_content(y, val:, closing:, content_type: nil)
467
+ content_type ||= "application/octet-stream"
468
+
469
+ case val
470
+ in TerminalShop::FilePart
471
+ return write_multipart_content(
472
+ y,
473
+ val: val.content,
474
+ closing: closing,
475
+ content_type: val.content_type
476
+ )
477
+ in Pathname
478
+ y << "Content-Type: #{content_type}\r\n\r\n"
479
+ io = val.open(binmode: true)
480
+ closing << io.method(:close)
481
+ IO.copy_stream(io, y)
482
+ in IO
483
+ y << "Content-Type: #{content_type}\r\n\r\n"
484
+ IO.copy_stream(val, y)
485
+ in StringIO
486
+ y << "Content-Type: #{content_type}\r\n\r\n"
487
+ y << val.string
488
+ in String
489
+ y << "Content-Type: #{content_type}\r\n\r\n"
490
+ y << val.to_s
491
+ in -> { primitive?(_1) }
492
+ y << "Content-Type: text/plain\r\n\r\n"
493
+ y << val.to_s
494
+ else
495
+ y << "Content-Type: application/json\r\n\r\n"
496
+ y << JSON.fast_generate(val)
497
+ end
498
+ y << "\r\n"
499
+ end
500
+
501
+ # @api private
502
+ #
503
+ # @param y [Enumerator::Yielder]
504
+ # @param boundary [String]
505
+ # @param key [Symbol, String]
506
+ # @param val [Object]
507
+ # @param closing [Array<Proc>]
508
+ private def write_multipart_chunk(y, boundary:, key:, val:, closing:)
509
+ y << "--#{boundary}\r\n"
510
+ y << "Content-Disposition: form-data"
511
+
512
+ unless key.nil?
513
+ name = ERB::Util.url_encode(key.to_s)
514
+ y << "; name=\"#{name}\""
515
+ end
516
+
517
+ case val
518
+ in TerminalShop::FilePart unless val.filename.nil?
519
+ filename = ERB::Util.url_encode(val.filename)
520
+ y << "; filename=\"#{filename}\""
521
+ in Pathname | IO
522
+ filename = ERB::Util.url_encode(File.basename(val.to_path))
523
+ y << "; filename=\"#{filename}\""
524
+ else
525
+ end
526
+ y << "\r\n"
527
+
528
+ write_multipart_content(y, val: val, closing: closing)
529
+ end
530
+
531
+ # @api private
532
+ #
533
+ # @param body [Object]
534
+ #
535
+ # @return [Array(String, Enumerable<String>)]
536
+ private def encode_multipart_streaming(body)
537
+ boundary = SecureRandom.urlsafe_base64(60)
538
+
539
+ closing = []
540
+ strio = writable_enum do |y|
541
+ case body
542
+ in Hash
543
+ body.each do |key, val|
544
+ case val
545
+ in Array if val.all? { primitive?(_1) }
546
+ val.each do |v|
547
+ write_multipart_chunk(y, boundary: boundary, key: key, val: v, closing: closing)
548
+ end
549
+ else
550
+ write_multipart_chunk(y, boundary: boundary, key: key, val: val, closing: closing)
551
+ end
552
+ end
553
+ else
554
+ write_multipart_chunk(y, boundary: boundary, key: nil, val: body, closing: closing)
555
+ end
556
+ y << "--#{boundary}--\r\n"
557
+ end
558
+
559
+ fused_io = fused_enum(strio) { closing.each(&:call) }
560
+ [boundary, fused_io]
561
+ end
562
+
563
+ # @api private
564
+ #
565
+ # @param headers [Hash{String=>String}]
566
+ # @param body [Object]
567
+ #
568
+ # @return [Object]
569
+ def encode_content(headers, body)
570
+ content_type = headers["content-type"]
571
+ case [content_type, body]
572
+ in [TerminalShop::Internal::Util::JSON_CONTENT, Hash | Array | -> { primitive?(_1) }]
573
+ [headers, JSON.fast_generate(body)]
574
+ in [TerminalShop::Internal::Util::JSONL_CONTENT, Enumerable] unless body.is_a?(TerminalShop::Internal::Type::FileInput)
575
+ [headers, body.lazy.map { JSON.fast_generate(_1) }]
576
+ in [%r{^multipart/form-data}, Hash | TerminalShop::Internal::Type::FileInput]
577
+ boundary, strio = encode_multipart_streaming(body)
578
+ headers = {**headers, "content-type" => "#{content_type}; boundary=#{boundary}"}
579
+ [headers, strio]
580
+ in [_, Symbol | Numeric]
581
+ [headers, body.to_s]
582
+ in [_, StringIO]
583
+ [headers, body.string]
584
+ in [_, TerminalShop::FilePart]
585
+ [headers, body.content]
586
+ else
587
+ [headers, body]
588
+ end
589
+ end
590
+
591
+ # @api private
592
+ #
593
+ # https://www.iana.org/assignments/character-sets/character-sets.xhtml
594
+ #
595
+ # @param content_type [String]
596
+ # @param text [String]
597
+ def force_charset!(content_type, text:)
598
+ charset = /charset=([^;\s]+)/.match(content_type)&.captures&.first
599
+
600
+ return unless charset
601
+
602
+ begin
603
+ encoding = Encoding.find(charset)
604
+ text.force_encoding(encoding)
605
+ rescue ArgumentError
606
+ nil
607
+ end
608
+ end
609
+
610
+ # @api private
611
+ #
612
+ # Assumes each chunk in stream has `Encoding::BINARY`.
613
+ #
614
+ # @param headers [Hash{String=>String}, Net::HTTPHeader]
615
+ # @param stream [Enumerable<String>]
616
+ # @param suppress_error [Boolean]
617
+ #
618
+ # @raise [JSON::ParserError]
619
+ # @return [Object]
620
+ def decode_content(headers, stream:, suppress_error: false)
621
+ case (content_type = headers["content-type"])
622
+ in TerminalShop::Internal::Util::JSON_CONTENT
623
+ json = stream.to_a.join
624
+ begin
625
+ JSON.parse(json, symbolize_names: true)
626
+ rescue JSON::ParserError => e
627
+ raise e unless suppress_error
628
+ json
629
+ end
630
+ in TerminalShop::Internal::Util::JSONL_CONTENT
631
+ lines = decode_lines(stream)
632
+ chain_fused(lines) do |y|
633
+ lines.each { y << JSON.parse(_1, symbolize_names: true) }
634
+ end
635
+ in %r{^text/event-stream}
636
+ lines = decode_lines(stream)
637
+ decode_sse(lines)
638
+ else
639
+ text = stream.to_a.join
640
+ force_charset!(content_type, text: text)
641
+ StringIO.new(text)
642
+ end
643
+ end
644
+ end
645
+
646
+ class << self
647
+ # @api private
648
+ #
649
+ # https://doc.rust-lang.org/std/iter/trait.FusedIterator.html
650
+ #
651
+ # @param enum [Enumerable<Object>]
652
+ # @param external [Boolean]
653
+ # @param close [Proc]
654
+ #
655
+ # @return [Enumerable<Object>]
656
+ def fused_enum(enum, external: false, &close)
657
+ fused = false
658
+ iter = Enumerator.new do |y|
659
+ next if fused
660
+
661
+ fused = true
662
+ if external
663
+ loop { y << enum.next }
664
+ else
665
+ enum.each(&y)
666
+ end
667
+ ensure
668
+ close&.call
669
+ close = nil
670
+ end
671
+
672
+ iter.define_singleton_method(:rewind) do
673
+ fused = true
674
+ self
675
+ end
676
+ iter
677
+ end
678
+
679
+ # @api private
680
+ #
681
+ # @param enum [Enumerable<Object>, nil]
682
+ def close_fused!(enum)
683
+ return unless enum.is_a?(Enumerator)
684
+
685
+ # rubocop:disable Lint/UnreachableLoop
686
+ enum.rewind.each { break }
687
+ # rubocop:enable Lint/UnreachableLoop
688
+ end
689
+
690
+ # @api private
691
+ #
692
+ # @param enum [Enumerable<Object>, nil]
693
+ # @param blk [Proc]
694
+ #
695
+ # @yieldparam [Enumerator::Yielder]
696
+ # @return [Enumerable<Object>]
697
+ def chain_fused(enum, &blk)
698
+ iter = Enumerator.new { blk.call(_1) }
699
+ fused_enum(iter) { close_fused!(enum) }
700
+ end
701
+ end
702
+
703
+ class << self
704
+ # @api private
705
+ #
706
+ # Assumes Strings have been forced into having `Encoding::BINARY`.
707
+ #
708
+ # This decoder is responsible for reassembling lines split across multiple
709
+ # fragments.
710
+ #
711
+ # @param enum [Enumerable<String>]
712
+ #
713
+ # @return [Enumerable<String>]
714
+ def decode_lines(enum)
715
+ re = /(\r\n|\r|\n)/
716
+ buffer = String.new
717
+ cr_seen = nil
718
+
719
+ chain_fused(enum) do |y|
720
+ enum.each do |row|
721
+ offset = buffer.bytesize
722
+ buffer << row
723
+ while (match = re.match(buffer, cr_seen&.to_i || offset))
724
+ case [match.captures.first, cr_seen]
725
+ in ["\r", nil]
726
+ cr_seen = match.end(1)
727
+ next
728
+ in ["\r" | "\r\n", Integer]
729
+ y << buffer.slice!(..(cr_seen.pred))
730
+ else
731
+ y << buffer.slice!(..(match.end(1).pred))
732
+ end
733
+ offset = 0
734
+ cr_seen = nil
735
+ end
736
+ end
737
+
738
+ y << buffer.slice!(..(cr_seen.pred)) unless cr_seen.nil?
739
+ y << buffer unless buffer.empty?
740
+ end
741
+ end
742
+
743
+ # @api private
744
+ #
745
+ # https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
746
+ #
747
+ # Assumes that `lines` has been decoded with `#decode_lines`.
748
+ #
749
+ # @param lines [Enumerable<String>]
750
+ #
751
+ # @return [Enumerable<Hash{Symbol=>Object}>]
752
+ def decode_sse(lines)
753
+ # rubocop:disable Metrics/BlockLength
754
+ chain_fused(lines) do |y|
755
+ blank = {event: nil, data: nil, id: nil, retry: nil}
756
+ current = {}
757
+
758
+ lines.each do |line|
759
+ case line.sub(/\R$/, "")
760
+ in ""
761
+ next if current.empty?
762
+ y << {**blank, **current}
763
+ current = {}
764
+ in /^:/
765
+ next
766
+ in /^([^:]+):\s?(.*)$/
767
+ field, value = Regexp.last_match.captures
768
+ case field
769
+ in "event"
770
+ current.merge!(event: value)
771
+ in "data"
772
+ (current[:data] ||= String.new) << (value << "\n")
773
+ in "id" unless value.include?("\0")
774
+ current.merge!(id: value)
775
+ in "retry" if /^\d+$/ =~ value
776
+ current.merge!(retry: Integer(value))
777
+ else
778
+ end
779
+ else
780
+ end
781
+ end
782
+ # rubocop:enable Metrics/BlockLength
783
+
784
+ y << {**blank, **current} unless current.empty?
785
+ end
786
+ end
787
+ end
788
+ end
789
+ end
790
+ end