terminal-shop 2.0.0 → 2.1.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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -8
  3. data/lib/terminal-shop/client.rb +1 -1
  4. data/lib/terminal-shop/models/address_create_params.rb +1 -1
  5. data/lib/terminal-shop/models/address_delete_params.rb +1 -1
  6. data/lib/terminal-shop/models/address_get_params.rb +1 -1
  7. data/lib/terminal-shop/models/address_list_params.rb +1 -1
  8. data/lib/terminal-shop/models/app_create_params.rb +1 -1
  9. data/lib/terminal-shop/models/app_delete_params.rb +1 -1
  10. data/lib/terminal-shop/models/app_get_params.rb +1 -1
  11. data/lib/terminal-shop/models/app_list_params.rb +1 -1
  12. data/lib/terminal-shop/models/card_collect_params.rb +1 -1
  13. data/lib/terminal-shop/models/card_create_params.rb +1 -1
  14. data/lib/terminal-shop/models/card_delete_params.rb +1 -1
  15. data/lib/terminal-shop/models/card_get_params.rb +1 -1
  16. data/lib/terminal-shop/models/card_list_params.rb +1 -1
  17. data/lib/terminal-shop/models/cart_clear_params.rb +1 -1
  18. data/lib/terminal-shop/models/cart_convert_params.rb +1 -1
  19. data/lib/terminal-shop/models/cart_get_params.rb +1 -1
  20. data/lib/terminal-shop/models/cart_set_address_params.rb +1 -1
  21. data/lib/terminal-shop/models/cart_set_card_params.rb +1 -1
  22. data/lib/terminal-shop/models/cart_set_item_params.rb +1 -1
  23. data/lib/terminal-shop/models/email_create_params.rb +1 -1
  24. data/lib/terminal-shop/models/order_create_params.rb +1 -1
  25. data/lib/terminal-shop/models/order_get_params.rb +1 -1
  26. data/lib/terminal-shop/models/order_list_params.rb +1 -1
  27. data/lib/terminal-shop/models/product_get_params.rb +1 -1
  28. data/lib/terminal-shop/models/product_list_params.rb +1 -1
  29. data/lib/terminal-shop/models/profile_me_params.rb +1 -1
  30. data/lib/terminal-shop/models/profile_update_params.rb +1 -1
  31. data/lib/terminal-shop/models/subscription_create_params.rb +1 -1
  32. data/lib/terminal-shop/models/subscription_delete_params.rb +1 -1
  33. data/lib/terminal-shop/models/subscription_get_params.rb +1 -1
  34. data/lib/terminal-shop/models/subscription_list_params.rb +1 -1
  35. data/lib/terminal-shop/models/token_create_params.rb +1 -1
  36. data/lib/terminal-shop/models/token_delete_params.rb +1 -1
  37. data/lib/terminal-shop/models/token_get_params.rb +1 -1
  38. data/lib/terminal-shop/models/token_list_params.rb +1 -1
  39. data/lib/terminal-shop/models/view_init_params.rb +1 -1
  40. data/lib/terminal-shop/request_options.rb +0 -33
  41. data/lib/terminal-shop/transport/base_client.rb +459 -0
  42. data/lib/terminal-shop/transport/pooled_net_requester.rb +182 -0
  43. data/lib/terminal-shop/type/array_of.rb +110 -0
  44. data/lib/terminal-shop/type/base_model.rb +362 -0
  45. data/lib/terminal-shop/type/base_page.rb +61 -0
  46. data/lib/terminal-shop/type/boolean_model.rb +52 -0
  47. data/lib/terminal-shop/type/converter.rb +217 -0
  48. data/lib/terminal-shop/type/enum.rb +101 -0
  49. data/lib/terminal-shop/type/hash_of.rb +136 -0
  50. data/lib/terminal-shop/type/request_parameters.rb +38 -0
  51. data/lib/terminal-shop/type/union.rb +183 -0
  52. data/lib/terminal-shop/type/unknown.rb +56 -0
  53. data/lib/terminal-shop/type.rb +23 -0
  54. data/lib/terminal-shop/util.rb +3 -5
  55. data/lib/terminal-shop/version.rb +1 -1
  56. data/lib/terminal-shop.rb +14 -6
  57. data/rbi/lib/terminal-shop/client.rbi +1 -1
  58. data/rbi/lib/terminal-shop/models/address_create_params.rbi +12 -2
  59. data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
  60. data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
  61. data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
  62. data/rbi/lib/terminal-shop/models/app_create_params.rbi +1 -1
  63. data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
  64. data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
  65. data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
  66. data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
  67. data/rbi/lib/terminal-shop/models/card_create_params.rbi +1 -1
  68. data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
  69. data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
  70. data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
  71. data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
  72. data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
  73. data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
  74. data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +1 -1
  75. data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +1 -1
  76. data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +1 -1
  77. data/rbi/lib/terminal-shop/models/email_create_params.rbi +1 -1
  78. data/rbi/lib/terminal-shop/models/order_create_params.rbi +1 -1
  79. data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
  80. data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
  81. data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
  82. data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
  83. data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
  84. data/rbi/lib/terminal-shop/models/profile_update_params.rbi +1 -1
  85. data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
  86. data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
  87. data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
  88. data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
  89. data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
  90. data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
  91. data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
  92. data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
  93. data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
  94. data/rbi/lib/terminal-shop/models/view_init_response.rbi +12 -1
  95. data/rbi/lib/terminal-shop/request_options.rbi +0 -15
  96. data/rbi/lib/terminal-shop/transport/base_client.rbi +208 -0
  97. data/rbi/lib/terminal-shop/transport/pooled_net_requester.rbi +64 -0
  98. data/rbi/lib/terminal-shop/type/array_of.rbi +82 -0
  99. data/rbi/lib/terminal-shop/type/base_model.rbi +194 -0
  100. data/rbi/lib/terminal-shop/type/base_page.rbi +38 -0
  101. data/rbi/lib/terminal-shop/type/boolean_model.rbi +41 -0
  102. data/rbi/lib/terminal-shop/type/converter.rbi +101 -0
  103. data/rbi/lib/terminal-shop/type/enum.rbi +58 -0
  104. data/rbi/lib/terminal-shop/type/hash_of.rbi +85 -0
  105. data/rbi/lib/terminal-shop/type/request_parameters.rbi +20 -0
  106. data/rbi/lib/terminal-shop/type/union.rbi +68 -0
  107. data/rbi/lib/terminal-shop/type/unknown.rbi +37 -0
  108. data/rbi/lib/terminal-shop/type.rbi +23 -0
  109. data/rbi/lib/terminal-shop/version.rbi +1 -1
  110. data/sig/terminal-shop/client.rbs +1 -1
  111. data/sig/terminal-shop/models/address_create_params.rbs +1 -1
  112. data/sig/terminal-shop/models/address_delete_params.rbs +1 -1
  113. data/sig/terminal-shop/models/address_get_params.rbs +1 -1
  114. data/sig/terminal-shop/models/address_list_params.rbs +1 -1
  115. data/sig/terminal-shop/models/app_create_params.rbs +1 -1
  116. data/sig/terminal-shop/models/app_delete_params.rbs +1 -1
  117. data/sig/terminal-shop/models/app_get_params.rbs +1 -1
  118. data/sig/terminal-shop/models/app_list_params.rbs +1 -1
  119. data/sig/terminal-shop/models/card_collect_params.rbs +1 -1
  120. data/sig/terminal-shop/models/card_create_params.rbs +1 -1
  121. data/sig/terminal-shop/models/card_delete_params.rbs +1 -1
  122. data/sig/terminal-shop/models/card_get_params.rbs +1 -1
  123. data/sig/terminal-shop/models/card_list_params.rbs +1 -1
  124. data/sig/terminal-shop/models/cart_clear_params.rbs +1 -1
  125. data/sig/terminal-shop/models/cart_convert_params.rbs +1 -1
  126. data/sig/terminal-shop/models/cart_get_params.rbs +1 -1
  127. data/sig/terminal-shop/models/cart_set_address_params.rbs +1 -1
  128. data/sig/terminal-shop/models/cart_set_card_params.rbs +1 -1
  129. data/sig/terminal-shop/models/cart_set_item_params.rbs +1 -1
  130. data/sig/terminal-shop/models/email_create_params.rbs +1 -1
  131. data/sig/terminal-shop/models/order_create_params.rbs +1 -1
  132. data/sig/terminal-shop/models/order_get_params.rbs +1 -1
  133. data/sig/terminal-shop/models/order_list_params.rbs +1 -1
  134. data/sig/terminal-shop/models/product_get_params.rbs +1 -1
  135. data/sig/terminal-shop/models/product_list_params.rbs +1 -1
  136. data/sig/terminal-shop/models/profile_me_params.rbs +1 -1
  137. data/sig/terminal-shop/models/profile_update_params.rbs +1 -1
  138. data/sig/terminal-shop/models/subscription_create_params.rbs +1 -1
  139. data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -1
  140. data/sig/terminal-shop/models/subscription_get_params.rbs +1 -1
  141. data/sig/terminal-shop/models/subscription_list_params.rbs +1 -1
  142. data/sig/terminal-shop/models/token_create_params.rbs +1 -1
  143. data/sig/terminal-shop/models/token_delete_params.rbs +1 -1
  144. data/sig/terminal-shop/models/token_get_params.rbs +1 -1
  145. data/sig/terminal-shop/models/token_list_params.rbs +1 -1
  146. data/sig/terminal-shop/models/view_init_params.rbs +1 -1
  147. data/sig/terminal-shop/request_options.rbs +0 -10
  148. data/sig/terminal-shop/transport/base_client.rbs +110 -0
  149. data/sig/terminal-shop/transport/pooled_net_requester.rbs +39 -0
  150. data/sig/terminal-shop/type/array_of.rbs +36 -0
  151. data/sig/terminal-shop/type/base_model.rbs +73 -0
  152. data/sig/terminal-shop/type/base_page.rbs +22 -0
  153. data/sig/terminal-shop/type/boolean_model.rbs +18 -0
  154. data/sig/terminal-shop/type/converter.rbs +42 -0
  155. data/sig/terminal-shop/type/enum.rbs +22 -0
  156. data/sig/terminal-shop/type/hash_of.rbs +36 -0
  157. data/sig/terminal-shop/type/request_parameters.rbs +13 -0
  158. data/sig/terminal-shop/type/union.rbs +40 -0
  159. data/sig/terminal-shop/type/unknown.rbs +18 -0
  160. data/sig/terminal-shop/type.rbs +22 -0
  161. data/sig/terminal-shop/version.rbs +1 -1
  162. metadata +41 -17
  163. data/lib/terminal-shop/base_client.rb +0 -457
  164. data/lib/terminal-shop/base_model.rb +0 -1201
  165. data/lib/terminal-shop/base_page.rb +0 -59
  166. data/lib/terminal-shop/extern.rb +0 -7
  167. data/lib/terminal-shop/pooled_net_requester.rb +0 -180
  168. data/rbi/lib/terminal-shop/base_client.rbi +0 -197
  169. data/rbi/lib/terminal-shop/base_model.rbi +0 -645
  170. data/rbi/lib/terminal-shop/base_page.rbi +0 -36
  171. data/rbi/lib/terminal-shop/extern.rbi +0 -7
  172. data/rbi/lib/terminal-shop/pooled_net_requester.rbi +0 -59
  173. data/sig/terminal-shop/base_client.rbs +0 -108
  174. data/sig/terminal-shop/base_model.rbs +0 -262
  175. data/sig/terminal-shop/base_page.rbs +0 -20
  176. data/sig/terminal-shop/extern.rbs +0 -4
  177. data/sig/terminal-shop/pooled_net_requester.rbs +0 -37
@@ -0,0 +1,208 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Transport
5
+ # @api private
6
+ class BaseClient
7
+ abstract!
8
+
9
+ RequestComponentsShape =
10
+ T.type_alias do
11
+ {
12
+ method: Symbol,
13
+ path: T.any(String, T::Array[String]),
14
+ query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
15
+ headers: T.nilable(
16
+ T::Hash[String,
17
+ T.nilable(
18
+ T.any(
19
+ String,
20
+ Integer,
21
+ T::Array[T.nilable(T.any(String, Integer))]
22
+ )
23
+ )]
24
+ ),
25
+ body: T.nilable(T.anything),
26
+ unwrap: T.nilable(Symbol),
27
+ page: T.nilable(T::Class[TerminalShop::Type::BasePage[TerminalShop::BaseModel]]),
28
+ stream: T.nilable(T::Class[T.anything]),
29
+ model: T.nilable(TerminalShop::Type::Converter::Input),
30
+ options: T.nilable(T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
31
+ }
32
+ end
33
+
34
+ RequestInputShape =
35
+ T.type_alias do
36
+ {
37
+ method: Symbol,
38
+ url: URI::Generic,
39
+ headers: T::Hash[String, String],
40
+ body: T.anything,
41
+ max_retries: Integer,
42
+ timeout: Float
43
+ }
44
+ end
45
+
46
+ # from whatwg fetch spec
47
+ MAX_REDIRECTS = 20
48
+
49
+ PLATFORM_HEADERS = T::Hash[String, String]
50
+
51
+ class << self
52
+ # @api private
53
+ sig { params(req: TerminalShop::Transport::BaseClient::RequestComponentsShape).void }
54
+ def validate!(req)
55
+ end
56
+
57
+ # @api private
58
+ sig do
59
+ params(
60
+ status: Integer,
61
+ headers: T.any(
62
+ T::Hash[String, String],
63
+ Net::HTTPHeader
64
+ )
65
+ ).returns(T::Boolean)
66
+ end
67
+ def should_retry?(status, headers:)
68
+ end
69
+
70
+ # @api private
71
+ sig do
72
+ params(
73
+ request: TerminalShop::Transport::BaseClient::RequestInputShape,
74
+ status: Integer,
75
+ response_headers: T.any(T::Hash[String, String], Net::HTTPHeader)
76
+ )
77
+ .returns(TerminalShop::Transport::BaseClient::RequestInputShape)
78
+ end
79
+ def follow_redirect(request, status:, response_headers:)
80
+ end
81
+
82
+ # @api private
83
+ sig do
84
+ params(
85
+ status: T.any(Integer, TerminalShop::APIConnectionError),
86
+ stream: T.nilable(T::Enumerable[String])
87
+ )
88
+ .void
89
+ end
90
+ def reap_connection!(status, stream:)
91
+ end
92
+ end
93
+
94
+ # @api private
95
+ sig { returns(TerminalShop::Transport::PooledNetRequester) }
96
+ attr_accessor :requester
97
+
98
+ # @api private
99
+ sig do
100
+ params(
101
+ base_url: String,
102
+ timeout: Float,
103
+ max_retries: Integer,
104
+ initial_retry_delay: Float,
105
+ max_retry_delay: Float,
106
+ headers: T::Hash[String,
107
+ T.nilable(T.any(String, Integer, T::Array[T.nilable(T.any(String, Integer))]))],
108
+ idempotency_header: T.nilable(String)
109
+ )
110
+ .returns(T.attached_class)
111
+ end
112
+ def self.new(
113
+ base_url:,
114
+ timeout: 0.0,
115
+ max_retries: 0,
116
+ initial_retry_delay: 0.0,
117
+ max_retry_delay: 0.0,
118
+ headers: {},
119
+ idempotency_header: nil
120
+ )
121
+ end
122
+
123
+ # @api private
124
+ sig { overridable.returns(T::Hash[String, String]) }
125
+ private def auth_headers
126
+ end
127
+
128
+ # @api private
129
+ sig { returns(String) }
130
+ private def generate_idempotency_key
131
+ end
132
+
133
+ # @api private
134
+ sig do
135
+ overridable
136
+ .params(
137
+ req: TerminalShop::Transport::BaseClient::RequestComponentsShape,
138
+ opts: TerminalShop::Util::AnyHash
139
+ )
140
+ .returns(TerminalShop::Transport::BaseClient::RequestInputShape)
141
+ end
142
+ private def build_request(req, opts)
143
+ end
144
+
145
+ # @api private
146
+ sig { params(headers: T::Hash[String, String], retry_count: Integer).returns(Float) }
147
+ private def retry_delay(headers, retry_count:)
148
+ end
149
+
150
+ # @api private
151
+ sig do
152
+ params(
153
+ request: TerminalShop::Transport::BaseClient::RequestInputShape,
154
+ redirect_count: Integer,
155
+ retry_count: Integer,
156
+ send_retry_header: T::Boolean
157
+ )
158
+ .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
159
+ end
160
+ private def send_request(request, redirect_count:, retry_count:, send_retry_header:)
161
+ end
162
+
163
+ # Execute the request specified by `req`. This is the method that all resource
164
+ # methods call into.
165
+ sig do
166
+ params(
167
+ method: Symbol,
168
+ path: T.any(String, T::Array[String]),
169
+ query: T.nilable(T::Hash[String, T.nilable(T.any(T::Array[String], String))]),
170
+ headers: T.nilable(
171
+ T::Hash[String,
172
+ T.nilable(
173
+ T.any(
174
+ String,
175
+ Integer,
176
+ T::Array[T.nilable(T.any(String, Integer))]
177
+ )
178
+ )]
179
+ ),
180
+ body: T.nilable(T.anything),
181
+ unwrap: T.nilable(Symbol),
182
+ page: T.nilable(T::Class[TerminalShop::Type::BasePage[TerminalShop::BaseModel]]),
183
+ stream: T.nilable(T::Class[T.anything]),
184
+ model: T.nilable(TerminalShop::Type::Converter::Input),
185
+ options: T.nilable(T.any(TerminalShop::RequestOptions, TerminalShop::Util::AnyHash))
186
+ )
187
+ .returns(T.anything)
188
+ end
189
+ def request(
190
+ method,
191
+ path,
192
+ query: {},
193
+ headers: {},
194
+ body: nil,
195
+ unwrap: nil,
196
+ page: nil,
197
+ stream: nil,
198
+ model: TerminalShop::Unknown,
199
+ options: {}
200
+ )
201
+ end
202
+
203
+ sig { returns(String) }
204
+ def inspect
205
+ end
206
+ end
207
+ end
208
+ end
@@ -0,0 +1,64 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Transport
5
+ # @api private
6
+ class PooledNetRequester
7
+ RequestShape =
8
+ T.type_alias do
9
+ {
10
+ method: Symbol,
11
+ url: URI::Generic,
12
+ headers: T::Hash[String, String],
13
+ body: T.anything,
14
+ deadline: Float
15
+ }
16
+ end
17
+
18
+ # from the golang stdlib
19
+ # https://github.com/golang/go/blob/c8eced8580028328fde7c03cbfcb720ce15b2358/src/net/http/transport.go#L49
20
+ KEEP_ALIVE_TIMEOUT = 30
21
+
22
+ class << self
23
+ # @api private
24
+ sig { params(url: URI::Generic).returns(Net::HTTP) }
25
+ def connect(url)
26
+ end
27
+
28
+ # @api private
29
+ sig { params(conn: Net::HTTP, deadline: Float).void }
30
+ def calibrate_socket_timeout(conn, deadline)
31
+ end
32
+
33
+ # @api private
34
+ sig do
35
+ params(
36
+ request: TerminalShop::Transport::PooledNetRequester::RequestShape,
37
+ blk: T.proc.params(arg0: String).void
38
+ )
39
+ .returns(Net::HTTPGenericRequest)
40
+ end
41
+ def build_request(request, &blk)
42
+ end
43
+ end
44
+
45
+ # @api private
46
+ sig { params(url: URI::Generic, deadline: Float, blk: T.proc.params(arg0: Net::HTTP).void).void }
47
+ private def with_pool(url, deadline:, &blk)
48
+ end
49
+
50
+ # @api private
51
+ sig do
52
+ params(request: TerminalShop::Transport::PooledNetRequester::RequestShape)
53
+ .returns([Integer, Net::HTTPResponse, T::Enumerable[String]])
54
+ end
55
+ def execute(request)
56
+ end
57
+
58
+ # @api private
59
+ sig { params(size: Integer).returns(T.attached_class) }
60
+ def self.new(size: Etc.nprocessors)
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,82 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Type
5
+ # @api private
6
+ #
7
+ # Array of items of a given type.
8
+ class ArrayOf
9
+ include TerminalShop::Type::Converter
10
+
11
+ abstract!
12
+ final!
13
+
14
+ Elem = type_member(:out)
15
+
16
+ sig(:final) do
17
+ params(
18
+ type_info: T.any(
19
+ TerminalShop::Util::AnyHash,
20
+ T.proc.returns(TerminalShop::Type::Converter::Input),
21
+ TerminalShop::Type::Converter::Input
22
+ ),
23
+ spec: TerminalShop::Util::AnyHash
24
+ )
25
+ .returns(T.attached_class)
26
+ end
27
+ def self.[](type_info, spec = {})
28
+ end
29
+
30
+ sig(:final) { params(other: T.anything).returns(T::Boolean) }
31
+ def ===(other)
32
+ end
33
+
34
+ sig(:final) { params(other: T.anything).returns(T::Boolean) }
35
+ def ==(other)
36
+ end
37
+
38
+ # @api private
39
+ sig(:final) do
40
+ override
41
+ .params(value: T.any(T::Enumerable[Elem], T.anything), state: TerminalShop::Type::Converter::State)
42
+ .returns(T.any(T::Array[T.anything], T.anything))
43
+ end
44
+ def coerce(value, state:)
45
+ end
46
+
47
+ # @api private
48
+ sig(:final) do
49
+ override
50
+ .params(value: T.any(T::Enumerable[Elem], T.anything))
51
+ .returns(T.any(T::Array[T.anything], T.anything))
52
+ end
53
+ def dump(value)
54
+ end
55
+
56
+ # @api private
57
+ sig(:final) { returns(Elem) }
58
+ protected def item_type
59
+ end
60
+
61
+ # @api private
62
+ sig(:final) { returns(T::Boolean) }
63
+ protected def nilable?
64
+ end
65
+
66
+ # @api private
67
+ sig(:final) do
68
+ params(
69
+ type_info: T.any(
70
+ TerminalShop::Util::AnyHash,
71
+ T.proc.returns(TerminalShop::Type::Converter::Input),
72
+ TerminalShop::Type::Converter::Input
73
+ ),
74
+ spec: TerminalShop::Util::AnyHash
75
+ )
76
+ .void
77
+ end
78
+ def initialize(type_info, spec = {})
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,194 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Type
5
+ class BaseModel
6
+ extend TerminalShop::Type::Converter
7
+
8
+ abstract!
9
+
10
+ KnownFieldShape = T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean, nilable: T::Boolean} }
11
+
12
+ class << self
13
+ # @api private
14
+ #
15
+ # Assumes superclass fields are totally defined before fields are accessed /
16
+ # defined on subclasses.
17
+ sig do
18
+ returns(
19
+ T::Hash[
20
+ Symbol,
21
+ T.all(
22
+ TerminalShop::BaseModel::KnownFieldShape,
23
+ {type_fn: T.proc.returns(TerminalShop::Type::Converter::Input)}
24
+ )
25
+ ]
26
+ )
27
+ end
28
+ def known_fields
29
+ end
30
+
31
+ # @api private
32
+ sig do
33
+ returns(
34
+ T::Hash[Symbol,
35
+ T.all(
36
+ TerminalShop::BaseModel::KnownFieldShape,
37
+ {type: TerminalShop::Type::Converter::Input}
38
+ )]
39
+ )
40
+ end
41
+ def fields
42
+ end
43
+
44
+ # @api private
45
+ sig do
46
+ params(
47
+ name_sym: Symbol,
48
+ required: T::Boolean,
49
+ type_info: T.any(
50
+ {
51
+ const: T.nilable(T.any(NilClass, T::Boolean, Integer, Float, Symbol)),
52
+ enum: T.nilable(T.proc.returns(TerminalShop::Type::Converter::Input)),
53
+ union: T.nilable(T.proc.returns(TerminalShop::Type::Converter::Input)),
54
+ api_name: Symbol,
55
+ nil?: T::Boolean
56
+ },
57
+ T.proc.returns(TerminalShop::Type::Converter::Input),
58
+ TerminalShop::Type::Converter::Input
59
+ ),
60
+ spec: TerminalShop::Util::AnyHash
61
+ )
62
+ .void
63
+ end
64
+ private def add_field(name_sym, required:, type_info:, spec:)
65
+ end
66
+
67
+ # @api private
68
+ sig do
69
+ params(
70
+ name_sym: Symbol,
71
+ type_info: T.any(
72
+ TerminalShop::Util::AnyHash,
73
+ T.proc.returns(TerminalShop::Type::Converter::Input),
74
+ TerminalShop::Type::Converter::Input
75
+ ),
76
+ spec: TerminalShop::Util::AnyHash
77
+ )
78
+ .void
79
+ end
80
+ def required(name_sym, type_info, spec = {})
81
+ end
82
+
83
+ # @api private
84
+ sig do
85
+ params(
86
+ name_sym: Symbol,
87
+ type_info: T.any(
88
+ TerminalShop::Util::AnyHash,
89
+ T.proc.returns(TerminalShop::Type::Converter::Input),
90
+ TerminalShop::Type::Converter::Input
91
+ ),
92
+ spec: TerminalShop::Util::AnyHash
93
+ )
94
+ .void
95
+ end
96
+ def optional(name_sym, type_info, spec = {})
97
+ end
98
+
99
+ # @api private
100
+ #
101
+ # `request_only` attributes not excluded from `.#coerce` when receiving responses
102
+ # even if well behaved servers should not send them
103
+ sig { params(blk: T.proc.void).void }
104
+ private def request_only(&blk)
105
+ end
106
+
107
+ # @api private
108
+ #
109
+ # `response_only` attributes are omitted from `.#dump` when making requests
110
+ sig { params(blk: T.proc.void).void }
111
+ private def response_only(&blk)
112
+ end
113
+
114
+ sig { params(other: T.anything).returns(T::Boolean) }
115
+ def ==(other)
116
+ end
117
+ end
118
+
119
+ sig { params(other: T.anything).returns(T::Boolean) }
120
+ def ==(other)
121
+ end
122
+
123
+ class << self
124
+ # @api private
125
+ sig do
126
+ override
127
+ .params(
128
+ value: T.any(TerminalShop::BaseModel, T::Hash[T.anything, T.anything], T.anything),
129
+ state: TerminalShop::Type::Converter::State
130
+ )
131
+ .returns(T.any(T.attached_class, T.anything))
132
+ end
133
+ def coerce(value, state:)
134
+ end
135
+
136
+ # @api private
137
+ sig do
138
+ override
139
+ .params(value: T.any(T.attached_class, T.anything))
140
+ .returns(T.any(T::Hash[T.anything, T.anything], T.anything))
141
+ end
142
+ def dump(value)
143
+ end
144
+ end
145
+
146
+ # Returns the raw value associated with the given key, if found. Otherwise, nil is
147
+ # returned.
148
+ #
149
+ # It is valid to lookup keys that are not in the API spec, for example to access
150
+ # undocumented features. This method does not parse response data into
151
+ # higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
152
+ sig { params(key: Symbol).returns(T.nilable(T.anything)) }
153
+ def [](key)
154
+ end
155
+
156
+ # Returns a Hash of the data underlying this object. O(1)
157
+ #
158
+ # Keys are Symbols and values are the raw values from the response. The return
159
+ # value indicates which values were ever set on the object. i.e. there will be a
160
+ # key in this hash if they ever were, even if the set value was nil.
161
+ #
162
+ # This method is not recursive. The returned value is shared by the object, so it
163
+ # should not be mutated.
164
+ sig { overridable.returns(TerminalShop::Util::AnyHash) }
165
+ def to_h
166
+ end
167
+
168
+ # Returns a Hash of the data underlying this object. O(1)
169
+ #
170
+ # Keys are Symbols and values are the raw values from the response. The return
171
+ # value indicates which values were ever set on the object. i.e. there will be a
172
+ # key in this hash if they ever were, even if the set value was nil.
173
+ #
174
+ # This method is not recursive. The returned value is shared by the object, so it
175
+ # should not be mutated.
176
+ sig { overridable.returns(TerminalShop::Util::AnyHash) }
177
+ def to_hash
178
+ end
179
+
180
+ sig { params(keys: T.nilable(T::Array[Symbol])).returns(TerminalShop::Util::AnyHash) }
181
+ def deconstruct_keys(keys)
182
+ end
183
+
184
+ # Create a new instance of a model.
185
+ sig { params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(T.attached_class) }
186
+ def self.new(data = {})
187
+ end
188
+
189
+ sig { returns(String) }
190
+ def inspect
191
+ end
192
+ end
193
+ end
194
+ end
@@ -0,0 +1,38 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Type
5
+ module BasePage
6
+ Elem = type_member(:out)
7
+
8
+ sig { overridable.returns(T::Boolean) }
9
+ def next_page?
10
+ end
11
+
12
+ sig { overridable.returns(T.self_type) }
13
+ def next_page
14
+ end
15
+
16
+ sig { overridable.params(blk: T.proc.params(arg0: Elem).void).void }
17
+ def auto_paging_each(&blk)
18
+ end
19
+
20
+ sig { returns(T::Enumerable[Elem]) }
21
+ def to_enum
22
+ end
23
+
24
+ # @api private
25
+ sig do
26
+ params(
27
+ client: TerminalShop::Transport::BaseClient,
28
+ req: TerminalShop::Transport::BaseClient::RequestComponentsShape,
29
+ headers: T.any(T::Hash[String, String], Net::HTTPHeader),
30
+ page_data: T.anything
31
+ )
32
+ .void
33
+ end
34
+ def initialize(client:, req:, headers:, page_data:)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,41 @@
1
+ # typed: strong
2
+
3
+ module TerminalShop
4
+ module Type
5
+ # @api private
6
+ #
7
+ # Ruby has no Boolean class; this is something for models to refer to.
8
+ class BooleanModel
9
+ extend TerminalShop::Type::Converter
10
+
11
+ abstract!
12
+ final!
13
+
14
+ sig(:final) { params(other: T.anything).returns(T::Boolean) }
15
+ def self.===(other)
16
+ end
17
+
18
+ sig(:final) { params(other: T.anything).returns(T::Boolean) }
19
+ def self.==(other)
20
+ end
21
+
22
+ class << self
23
+ # @api private
24
+ sig(:final) do
25
+ override
26
+ .params(value: T.any(T::Boolean, T.anything), state: TerminalShop::Type::Converter::State)
27
+ .returns(T.any(T::Boolean, T.anything))
28
+ end
29
+ def coerce(value, state:)
30
+ end
31
+
32
+ # @api private
33
+ sig(:final) do
34
+ override.params(value: T.any(T::Boolean, T.anything)).returns(T.any(T::Boolean, T.anything))
35
+ end
36
+ def dump(value)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end