terminal-shop 1.7.0 → 2.0.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.
- checksums.yaml +4 -4
- data/README.md +17 -1
- data/lib/terminal-shop/base_client.rb +47 -56
- data/lib/terminal-shop/base_model.rb +300 -352
- data/lib/terminal-shop/base_page.rb +30 -31
- data/lib/terminal-shop/client.rb +2 -3
- data/lib/terminal-shop/errors.rb +12 -17
- data/lib/terminal-shop/extern.rb +1 -4
- data/lib/terminal-shop/models/product.rb +7 -3
- data/lib/terminal-shop/models/region.rb +7 -3
- data/lib/terminal-shop/models/subscription.rb +7 -3
- data/lib/terminal-shop/pooled_net_requester.rb +30 -21
- data/lib/terminal-shop/request_options.rb +5 -12
- data/lib/terminal-shop/resources/address.rb +0 -5
- data/lib/terminal-shop/resources/app.rb +0 -5
- data/lib/terminal-shop/resources/card.rb +0 -6
- data/lib/terminal-shop/resources/cart.rb +0 -7
- data/lib/terminal-shop/resources/email.rb +0 -2
- data/lib/terminal-shop/resources/order.rb +0 -4
- data/lib/terminal-shop/resources/product.rb +0 -3
- data/lib/terminal-shop/resources/profile.rb +0 -3
- data/lib/terminal-shop/resources/subscription.rb +0 -5
- data/lib/terminal-shop/resources/token.rb +0 -5
- data/lib/terminal-shop/resources/view.rb +0 -2
- data/lib/terminal-shop/util.rb +59 -77
- data/lib/terminal-shop/version.rb +1 -1
- data/lib/terminal-shop.rb +16 -0
- data/manifest.yaml +1 -0
- data/rbi/lib/terminal-shop/base_client.rbi +63 -41
- data/rbi/lib/terminal-shop/base_model.rbi +278 -129
- data/rbi/lib/terminal-shop/base_page.rbi +1 -4
- data/rbi/lib/terminal-shop/client.rbi +29 -30
- data/rbi/lib/terminal-shop/errors.rbi +12 -14
- data/rbi/lib/terminal-shop/extern.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address.rbi +25 -51
- data/rbi/lib/terminal-shop/models/address_create_params.rbi +23 -46
- data/rbi/lib/terminal-shop/models/address_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/address_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/address_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/address_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/address_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/app.rbi +9 -24
- data/rbi/lib/terminal-shop/models/app_create_params.rbi +3 -13
- data/rbi/lib/terminal-shop/models/app_create_response.rbi +10 -20
- data/rbi/lib/terminal-shop/models/app_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/app_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/app_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/app_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/card.rbi +22 -36
- data/rbi/lib/terminal-shop/models/card_collect_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_collect_response.rbi +11 -14
- data/rbi/lib/terminal-shop/models/card_create_params.rbi +4 -7
- data/rbi/lib/terminal-shop/models/card_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/card_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/card_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/card_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/card_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart.rbi +53 -88
- data/rbi/lib/terminal-shop/models/cart_clear_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_clear_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_convert_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_convert_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/cart_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/cart_set_address_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/cart_set_address_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_set_card_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/cart_set_card_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/cart_set_item_params.rbi +5 -13
- data/rbi/lib/terminal-shop/models/cart_set_item_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/email_create_params.rbi +3 -7
- data/rbi/lib/terminal-shop/models/email_create_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/order.rbi +80 -139
- data/rbi/lib/terminal-shop/models/order_create_params.rbi +7 -19
- data/rbi/lib/terminal-shop/models/order_create_response.rbi +2 -6
- data/rbi/lib/terminal-shop/models/order_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/order_get_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/order_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/order_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/product.rbi +52 -80
- data/rbi/lib/terminal-shop/models/product_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/product_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/product_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/product_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/product_variant.rbi +7 -18
- data/rbi/lib/terminal-shop/models/profile.rbi +20 -36
- data/rbi/lib/terminal-shop/models/profile_me_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/profile_me_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/profile_update_params.rbi +3 -13
- data/rbi/lib/terminal-shop/models/profile_update_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/region.rbi +10 -8
- data/rbi/lib/terminal-shop/models/subscription.rbi +35 -75
- data/rbi/lib/terminal-shop/models/subscription_create_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_create_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/subscription_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/subscription_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_get_response.rbi +8 -6
- data/rbi/lib/terminal-shop/models/subscription_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/subscription_list_response.rbi +4 -8
- data/rbi/lib/terminal-shop/models/token.rbi +8 -18
- data/rbi/lib/terminal-shop/models/token_create_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_create_response.rbi +11 -20
- data/rbi/lib/terminal-shop/models/token_delete_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_delete_response.rbi +1 -6
- data/rbi/lib/terminal-shop/models/token_get_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_get_response.rbi +6 -6
- data/rbi/lib/terminal-shop/models/token_list_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/token_list_response.rbi +5 -6
- data/rbi/lib/terminal-shop/models/view_init_params.rbi +1 -1
- data/rbi/lib/terminal-shop/models/view_init_response.rbi +37 -81
- data/rbi/lib/terminal-shop/pooled_net_requester.rbi +24 -6
- data/rbi/lib/terminal-shop/request_options.rbi +32 -57
- data/rbi/lib/terminal-shop/resources/address.rbi +26 -6
- data/rbi/lib/terminal-shop/resources/app.rbi +18 -6
- data/rbi/lib/terminal-shop/resources/card.rbi +27 -8
- data/rbi/lib/terminal-shop/resources/cart.rbi +29 -9
- data/rbi/lib/terminal-shop/resources/email.rbi +7 -2
- data/rbi/lib/terminal-shop/resources/order.rbi +20 -5
- data/rbi/lib/terminal-shop/resources/product.rbi +9 -3
- data/rbi/lib/terminal-shop/resources/profile.rbi +4 -2
- data/rbi/lib/terminal-shop/resources/subscription.rbi +26 -6
- data/rbi/lib/terminal-shop/resources/token.rbi +18 -6
- data/rbi/lib/terminal-shop/resources/view.rbi +3 -1
- data/rbi/lib/terminal-shop/util.rbi +78 -20
- data/rbi/lib/terminal-shop/version.rbi +1 -1
- data/sig/terminal-shop/base_client.rbs +20 -15
- data/sig/terminal-shop/base_model.rbs +36 -18
- data/sig/terminal-shop/client.rbs +8 -8
- data/sig/terminal-shop/errors.rbs +21 -21
- data/sig/terminal-shop/models/address.rbs +11 -15
- data/sig/terminal-shop/models/address_create_params.rbs +11 -16
- data/sig/terminal-shop/models/address_create_response.rbs +1 -6
- data/sig/terminal-shop/models/address_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/address_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/address_get_params.rbs +1 -6
- data/sig/terminal-shop/models/address_get_response.rbs +1 -6
- data/sig/terminal-shop/models/address_list_params.rbs +1 -6
- data/sig/terminal-shop/models/address_list_response.rbs +1 -6
- data/sig/terminal-shop/models/app.rbs +6 -5
- data/sig/terminal-shop/models/app_create_params.rbs +5 -10
- data/sig/terminal-shop/models/app_create_response.rbs +4 -12
- data/sig/terminal-shop/models/app_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/app_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/app_get_params.rbs +1 -5
- data/sig/terminal-shop/models/app_get_response.rbs +1 -5
- data/sig/terminal-shop/models/app_list_params.rbs +1 -5
- data/sig/terminal-shop/models/app_list_response.rbs +1 -6
- data/sig/terminal-shop/models/card.rbs +7 -16
- data/sig/terminal-shop/models/card_collect_params.rbs +1 -6
- data/sig/terminal-shop/models/card_collect_response.rbs +4 -12
- data/sig/terminal-shop/models/card_create_params.rbs +4 -6
- data/sig/terminal-shop/models/card_create_response.rbs +1 -6
- data/sig/terminal-shop/models/card_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/card_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/card_get_params.rbs +1 -5
- data/sig/terminal-shop/models/card_get_response.rbs +1 -6
- data/sig/terminal-shop/models/card_list_params.rbs +1 -5
- data/sig/terminal-shop/models/card_list_response.rbs +1 -6
- data/sig/terminal-shop/models/cart.rbs +20 -34
- data/sig/terminal-shop/models/cart_clear_params.rbs +1 -6
- data/sig/terminal-shop/models/cart_clear_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_convert_params.rbs +1 -6
- data/sig/terminal-shop/models/cart_convert_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_get_params.rbs +1 -5
- data/sig/terminal-shop/models/cart_get_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_address_params.rbs +4 -9
- data/sig/terminal-shop/models/cart_set_address_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_card_params.rbs +4 -6
- data/sig/terminal-shop/models/cart_set_card_response.rbs +1 -6
- data/sig/terminal-shop/models/cart_set_item_params.rbs +5 -10
- data/sig/terminal-shop/models/cart_set_item_response.rbs +1 -6
- data/sig/terminal-shop/models/email_create_params.rbs +4 -6
- data/sig/terminal-shop/models/email_create_response.rbs +1 -6
- data/sig/terminal-shop/models/order.rbs +31 -50
- data/sig/terminal-shop/models/order_create_params.rbs +6 -11
- data/sig/terminal-shop/models/order_create_response.rbs +1 -6
- data/sig/terminal-shop/models/order_get_params.rbs +1 -5
- data/sig/terminal-shop/models/order_get_response.rbs +1 -6
- data/sig/terminal-shop/models/order_list_params.rbs +1 -6
- data/sig/terminal-shop/models/order_list_response.rbs +1 -6
- data/sig/terminal-shop/models/product.rbs +20 -27
- data/sig/terminal-shop/models/product_get_params.rbs +1 -6
- data/sig/terminal-shop/models/product_get_response.rbs +1 -6
- data/sig/terminal-shop/models/product_list_params.rbs +1 -6
- data/sig/terminal-shop/models/product_list_response.rbs +1 -6
- data/sig/terminal-shop/models/product_variant.rbs +1 -5
- data/sig/terminal-shop/models/profile.rbs +8 -17
- data/sig/terminal-shop/models/profile_me_params.rbs +1 -6
- data/sig/terminal-shop/models/profile_me_response.rbs +1 -6
- data/sig/terminal-shop/models/profile_update_params.rbs +5 -10
- data/sig/terminal-shop/models/profile_update_response.rbs +1 -6
- data/sig/terminal-shop/models/region.rbs +4 -2
- data/sig/terminal-shop/models/subscription.rbs +15 -27
- data/sig/terminal-shop/models/subscription_create_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_create_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_get_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_get_response.rbs +1 -6
- data/sig/terminal-shop/models/subscription_list_params.rbs +1 -6
- data/sig/terminal-shop/models/subscription_list_response.rbs +3 -6
- data/sig/terminal-shop/models/token.rbs +1 -5
- data/sig/terminal-shop/models/token_create_params.rbs +1 -6
- data/sig/terminal-shop/models/token_create_response.rbs +4 -12
- data/sig/terminal-shop/models/token_delete_params.rbs +1 -6
- data/sig/terminal-shop/models/token_delete_response.rbs +1 -6
- data/sig/terminal-shop/models/token_get_params.rbs +1 -5
- data/sig/terminal-shop/models/token_get_response.rbs +1 -6
- data/sig/terminal-shop/models/token_list_params.rbs +1 -6
- data/sig/terminal-shop/models/token_list_response.rbs +1 -6
- data/sig/terminal-shop/models/view_init_params.rbs +1 -5
- data/sig/terminal-shop/models/view_init_response.rbs +15 -23
- data/sig/terminal-shop/pooled_net_requester.rbs +10 -3
- data/sig/terminal-shop/request_options.rbs +2 -2
- data/sig/terminal-shop/resources/address.rbs +22 -41
- data/sig/terminal-shop/resources/app.rbs +16 -34
- data/sig/terminal-shop/resources/card.rbs +18 -40
- data/sig/terminal-shop/resources/cart.rbs +22 -47
- data/sig/terminal-shop/resources/email.rbs +4 -8
- data/sig/terminal-shop/resources/order.rbs +13 -26
- data/sig/terminal-shop/resources/product.rbs +7 -16
- data/sig/terminal-shop/resources/profile.rbs +8 -16
- data/sig/terminal-shop/resources/subscription.rbs +21 -43
- data/sig/terminal-shop/resources/token.rbs +14 -32
- data/sig/terminal-shop/resources/view.rbs +3 -7
- data/sig/terminal-shop/util.rbs +9 -9
- data/sig/terminal-shop/version.rbs +1 -1
- metadata +4 -4
@@ -1,19 +1,21 @@
|
|
1
1
|
# typed: strong
|
2
2
|
|
3
3
|
module TerminalShop
|
4
|
+
# @api private
|
4
5
|
module Converter
|
5
|
-
abstract!
|
6
|
-
|
7
6
|
Input = T.type_alias { T.any(TerminalShop::Converter, T::Class[T.anything]) }
|
8
7
|
|
8
|
+
# @api private
|
9
9
|
sig { overridable.params(value: T.anything).returns(T.anything) }
|
10
10
|
def coerce(value)
|
11
11
|
end
|
12
12
|
|
13
|
+
# @api private
|
13
14
|
sig { overridable.params(value: T.anything).returns(T.anything) }
|
14
15
|
def dump(value)
|
15
16
|
end
|
16
17
|
|
18
|
+
# @api private
|
17
19
|
sig do
|
18
20
|
overridable
|
19
21
|
.params(value: T.anything)
|
@@ -23,6 +25,7 @@ module TerminalShop
|
|
23
25
|
end
|
24
26
|
|
25
27
|
class << self
|
28
|
+
# @api private
|
26
29
|
sig do
|
27
30
|
params(
|
28
31
|
spec: T.any(
|
@@ -40,43 +43,69 @@ module TerminalShop
|
|
40
43
|
def self.type_info(spec)
|
41
44
|
end
|
42
45
|
|
46
|
+
# @api private
|
47
|
+
#
|
48
|
+
# Based on `target`, transform `value` into `target`, to the extent possible:
|
49
|
+
#
|
50
|
+
# 1. if the given `value` conforms to `target` already, return the given `value`
|
51
|
+
# 2. if it's possible and safe to convert the given `value` to `target`, then the
|
52
|
+
# converted value
|
53
|
+
# 3. otherwise, the given `value` unaltered
|
43
54
|
sig { params(target: TerminalShop::Converter::Input, value: T.anything).returns(T.anything) }
|
44
55
|
def self.coerce(target, value)
|
45
56
|
end
|
46
57
|
|
58
|
+
# @api private
|
47
59
|
sig { params(target: TerminalShop::Converter::Input, value: T.anything).returns(T.anything) }
|
48
60
|
def self.dump(target, value)
|
49
61
|
end
|
50
62
|
|
63
|
+
# @api private
|
64
|
+
#
|
65
|
+
# The underlying algorithm for computing maximal compatibility is subject to
|
66
|
+
# future improvements.
|
67
|
+
#
|
68
|
+
# Similar to `#.coerce`, used to determine the best union variant to decode into.
|
69
|
+
#
|
70
|
+
# 1. determine if strict-ish coercion is possible
|
71
|
+
# 2. return either result of successful coercion or if loose coercion is possible
|
72
|
+
# 3. return a score for recursively tallied count for fields that can be coerced
|
51
73
|
sig { params(target: TerminalShop::Converter::Input, value: T.anything).returns(T.anything) }
|
52
74
|
def self.try_strict_coerce(target, value)
|
53
75
|
end
|
54
76
|
end
|
55
77
|
end
|
56
78
|
|
79
|
+
# @api private
|
80
|
+
#
|
81
|
+
# When we don't know what to expect for the value.
|
57
82
|
class Unknown
|
58
|
-
abstract!
|
59
|
-
|
60
83
|
extend TerminalShop::Converter
|
61
84
|
|
62
|
-
|
85
|
+
abstract!
|
86
|
+
final!
|
87
|
+
|
88
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
63
89
|
def self.===(other)
|
64
90
|
end
|
65
91
|
|
66
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
92
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
67
93
|
def self.==(other)
|
68
94
|
end
|
69
95
|
|
70
96
|
class << self
|
71
|
-
|
97
|
+
# @api private
|
98
|
+
sig(:final) { override.params(value: T.anything).returns(T.anything) }
|
72
99
|
def coerce(value)
|
73
100
|
end
|
74
101
|
|
75
|
-
|
102
|
+
# @api private
|
103
|
+
sig(:final) { override.params(value: T.anything).returns(T.anything) }
|
76
104
|
def dump(value)
|
77
105
|
end
|
78
106
|
|
79
|
-
|
107
|
+
# @api private
|
108
|
+
sig(:final) do
|
80
109
|
override
|
81
110
|
.params(value: T.anything)
|
82
111
|
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
@@ -86,29 +115,40 @@ module TerminalShop
|
|
86
115
|
end
|
87
116
|
end
|
88
117
|
|
118
|
+
# @api private
|
119
|
+
#
|
120
|
+
# Ruby has no Boolean class; this is something for models to refer to.
|
89
121
|
class BooleanModel
|
90
|
-
abstract!
|
91
|
-
|
92
122
|
extend TerminalShop::Converter
|
93
123
|
|
94
|
-
|
124
|
+
abstract!
|
125
|
+
final!
|
126
|
+
|
127
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
95
128
|
def self.===(other)
|
96
129
|
end
|
97
130
|
|
98
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
131
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
99
132
|
def self.==(other)
|
100
133
|
end
|
101
134
|
|
102
135
|
class << self
|
103
|
-
|
136
|
+
# @api private
|
137
|
+
sig(:final) do
|
138
|
+
override.params(value: T.any(T::Boolean, T.anything)).returns(T.any(T::Boolean, T.anything))
|
139
|
+
end
|
104
140
|
def coerce(value)
|
105
141
|
end
|
106
142
|
|
107
|
-
|
143
|
+
# @api private
|
144
|
+
sig(:final) do
|
145
|
+
override.params(value: T.any(T::Boolean, T.anything)).returns(T.any(T::Boolean, T.anything))
|
146
|
+
end
|
108
147
|
def dump(value)
|
109
148
|
end
|
110
149
|
|
111
|
-
|
150
|
+
# @api private
|
151
|
+
sig(:final) do
|
112
152
|
override
|
113
153
|
.params(value: T.anything)
|
114
154
|
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
@@ -118,131 +158,164 @@ module TerminalShop
|
|
118
158
|
end
|
119
159
|
end
|
120
160
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
161
|
+
# @api private
|
162
|
+
#
|
163
|
+
# A value from among a specified list of options. OpenAPI enum values map to Ruby
|
164
|
+
# values in the SDK as follows:
|
165
|
+
#
|
166
|
+
# 1. boolean => true | false
|
167
|
+
# 2. integer => Integer
|
168
|
+
# 3. float => Float
|
169
|
+
# 4. string => Symbol
|
170
|
+
#
|
171
|
+
# We can therefore convert string values to Symbols, but can't convert other
|
172
|
+
# values safely.
|
173
|
+
module Enum
|
174
|
+
include TerminalShop::Converter
|
125
175
|
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
176
|
+
# All of the valid Symbol values for this enum.
|
177
|
+
sig { overridable.returns(T::Array[T.any(NilClass, T::Boolean, Integer, Float, Symbol)]) }
|
178
|
+
def values
|
179
|
+
end
|
130
180
|
|
131
|
-
|
132
|
-
|
133
|
-
|
181
|
+
# @api private
|
182
|
+
#
|
183
|
+
# Guard against thread safety issues by instantiating `@values`.
|
184
|
+
sig { void }
|
185
|
+
private def finalize!
|
134
186
|
end
|
135
187
|
|
136
188
|
sig { params(other: T.anything).returns(T::Boolean) }
|
137
|
-
def
|
189
|
+
def ===(other)
|
138
190
|
end
|
139
191
|
|
140
192
|
sig { params(other: T.anything).returns(T::Boolean) }
|
141
|
-
def
|
193
|
+
def ==(other)
|
142
194
|
end
|
143
195
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
196
|
+
# @api private
|
197
|
+
sig { override.params(value: T.any(String, Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
|
198
|
+
def coerce(value)
|
199
|
+
end
|
148
200
|
|
149
|
-
|
150
|
-
|
151
|
-
|
201
|
+
# @api private
|
202
|
+
sig { override.params(value: T.any(Symbol, T.anything)).returns(T.any(Symbol, T.anything)) }
|
203
|
+
def dump(value)
|
204
|
+
end
|
152
205
|
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
206
|
+
# @api private
|
207
|
+
sig do
|
208
|
+
override
|
209
|
+
.params(value: T.anything)
|
210
|
+
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
211
|
+
end
|
212
|
+
def try_strict_coerce(value)
|
160
213
|
end
|
161
214
|
end
|
162
215
|
|
163
|
-
|
164
|
-
|
216
|
+
# @api private
|
217
|
+
module Union
|
218
|
+
include TerminalShop::Converter
|
165
219
|
|
166
|
-
|
220
|
+
# @api private
|
221
|
+
#
|
222
|
+
# All of the specified variant info for this union.
|
223
|
+
sig { returns(T::Array[[T.nilable(Symbol), T.proc.returns(TerminalShop::Converter::Input)]]) }
|
224
|
+
private def known_variants
|
225
|
+
end
|
167
226
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
227
|
+
# @api private
|
228
|
+
sig { returns(T::Array[[T.nilable(Symbol), T.anything]]) }
|
229
|
+
protected def derefed_variants
|
230
|
+
end
|
172
231
|
|
173
|
-
|
174
|
-
|
175
|
-
|
232
|
+
# All of the specified variants for this union.
|
233
|
+
sig { overridable.returns(T::Array[T.anything]) }
|
234
|
+
def variants
|
235
|
+
end
|
176
236
|
|
177
|
-
|
178
|
-
|
179
|
-
|
237
|
+
# @api private
|
238
|
+
sig { params(property: Symbol).void }
|
239
|
+
private def discriminator(property)
|
240
|
+
end
|
180
241
|
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
T.proc.returns(TerminalShop::Converter::Input),
|
192
|
-
TerminalShop::Converter::Input
|
193
|
-
)
|
194
|
-
)
|
195
|
-
.void
|
196
|
-
end
|
197
|
-
private def variant(key, spec = nil)
|
198
|
-
end
|
242
|
+
# @api private
|
243
|
+
sig do
|
244
|
+
params(
|
245
|
+
key: T.any(Symbol, TerminalShop::Util::AnyHash, T.proc.returns(T.anything), T.anything),
|
246
|
+
spec: T.any(TerminalShop::Util::AnyHash, T.proc.returns(T.anything), T.anything)
|
247
|
+
)
|
248
|
+
.void
|
249
|
+
end
|
250
|
+
private def variant(key, spec = nil)
|
251
|
+
end
|
199
252
|
|
200
|
-
|
201
|
-
|
202
|
-
|
253
|
+
# @api private
|
254
|
+
sig { params(value: T.anything).returns(T.nilable(T.anything)) }
|
255
|
+
private def resolve_variant(value)
|
203
256
|
end
|
204
257
|
|
205
258
|
sig { params(other: T.anything).returns(T::Boolean) }
|
206
|
-
def
|
259
|
+
def ===(other)
|
207
260
|
end
|
208
261
|
|
209
262
|
sig { params(other: T.anything).returns(T::Boolean) }
|
210
|
-
def
|
263
|
+
def ==(other)
|
211
264
|
end
|
212
265
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
266
|
+
# @api private
|
267
|
+
sig { override.params(value: T.anything).returns(T.anything) }
|
268
|
+
def coerce(value)
|
269
|
+
end
|
217
270
|
|
218
|
-
|
219
|
-
|
220
|
-
|
271
|
+
# @api private
|
272
|
+
sig { override.params(value: T.anything).returns(T.anything) }
|
273
|
+
def dump(value)
|
274
|
+
end
|
221
275
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
276
|
+
# @api private
|
277
|
+
sig do
|
278
|
+
override
|
279
|
+
.params(value: T.anything)
|
280
|
+
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
281
|
+
end
|
282
|
+
def try_strict_coerce(value)
|
229
283
|
end
|
230
284
|
end
|
231
285
|
|
286
|
+
# @api private
|
287
|
+
#
|
288
|
+
# Array of items of a given type.
|
232
289
|
class ArrayOf
|
290
|
+
include TerminalShop::Converter
|
291
|
+
|
233
292
|
abstract!
|
293
|
+
final!
|
234
294
|
|
235
|
-
|
295
|
+
sig(:final) do
|
296
|
+
params(
|
297
|
+
type_info: T.any(
|
298
|
+
TerminalShop::Util::AnyHash,
|
299
|
+
T.proc.returns(TerminalShop::Converter::Input),
|
300
|
+
TerminalShop::Converter::Input
|
301
|
+
),
|
302
|
+
spec: TerminalShop::Util::AnyHash
|
303
|
+
)
|
304
|
+
.returns(T.attached_class)
|
305
|
+
end
|
306
|
+
def self.[](type_info, spec = {})
|
307
|
+
end
|
236
308
|
|
237
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
309
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
238
310
|
def ===(other)
|
239
311
|
end
|
240
312
|
|
241
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
313
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
242
314
|
def ==(other)
|
243
315
|
end
|
244
316
|
|
245
|
-
|
317
|
+
# @api private
|
318
|
+
sig(:final) do
|
246
319
|
override
|
247
320
|
.params(value: T.any(T::Enumerable[T.anything], T.anything))
|
248
321
|
.returns(T.any(T::Array[T.anything], T.anything))
|
@@ -250,7 +323,8 @@ module TerminalShop
|
|
250
323
|
def coerce(value)
|
251
324
|
end
|
252
325
|
|
253
|
-
|
326
|
+
# @api private
|
327
|
+
sig(:final) do
|
254
328
|
override
|
255
329
|
.params(value: T.any(T::Enumerable[T.anything], T.anything))
|
256
330
|
.returns(T.any(T::Array[T.anything], T.anything))
|
@@ -258,7 +332,8 @@ module TerminalShop
|
|
258
332
|
def dump(value)
|
259
333
|
end
|
260
334
|
|
261
|
-
|
335
|
+
# @api private
|
336
|
+
sig(:final) do
|
262
337
|
override
|
263
338
|
.params(value: T.anything)
|
264
339
|
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
@@ -266,55 +341,78 @@ module TerminalShop
|
|
266
341
|
def try_strict_coerce(value)
|
267
342
|
end
|
268
343
|
|
269
|
-
|
344
|
+
# @api private
|
345
|
+
sig(:final) { returns(T.anything) }
|
270
346
|
protected def item_type
|
271
347
|
end
|
272
348
|
|
273
|
-
|
349
|
+
# @api private
|
350
|
+
sig(:final) do
|
274
351
|
params(
|
275
352
|
type_info: T.any(
|
276
|
-
|
353
|
+
TerminalShop::Util::AnyHash,
|
277
354
|
T.proc.returns(TerminalShop::Converter::Input),
|
278
355
|
TerminalShop::Converter::Input
|
279
356
|
),
|
280
|
-
spec:
|
357
|
+
spec: TerminalShop::Util::AnyHash
|
281
358
|
)
|
282
|
-
.
|
359
|
+
.void
|
283
360
|
end
|
284
|
-
def
|
361
|
+
def initialize(type_info, spec = {})
|
285
362
|
end
|
286
363
|
end
|
287
364
|
|
365
|
+
# @api private
|
366
|
+
#
|
367
|
+
# Hash of items of a given type.
|
288
368
|
class HashOf
|
369
|
+
include TerminalShop::Converter
|
370
|
+
|
289
371
|
abstract!
|
372
|
+
final!
|
290
373
|
|
291
|
-
|
374
|
+
sig(:final) do
|
375
|
+
params(
|
376
|
+
type_info: T.any(
|
377
|
+
TerminalShop::Util::AnyHash,
|
378
|
+
T.proc.returns(TerminalShop::Converter::Input),
|
379
|
+
TerminalShop::Converter::Input
|
380
|
+
),
|
381
|
+
spec: TerminalShop::Util::AnyHash
|
382
|
+
)
|
383
|
+
.returns(T.attached_class)
|
384
|
+
end
|
385
|
+
def self.[](type_info, spec = {})
|
386
|
+
end
|
292
387
|
|
293
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
388
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
294
389
|
def ===(other)
|
295
390
|
end
|
296
391
|
|
297
|
-
sig { params(other: T.anything).returns(T::Boolean) }
|
392
|
+
sig(:final) { params(other: T.anything).returns(T::Boolean) }
|
298
393
|
def ==(other)
|
299
394
|
end
|
300
395
|
|
301
|
-
|
396
|
+
# @api private
|
397
|
+
sig(:final) do
|
302
398
|
override
|
303
399
|
.params(value: T.any(T::Hash[T.anything, T.anything], T.anything))
|
304
|
-
.returns(T.any(
|
400
|
+
.returns(T.any(TerminalShop::Util::AnyHash, T.anything))
|
305
401
|
end
|
306
402
|
def coerce(value)
|
307
403
|
end
|
308
404
|
|
309
|
-
|
405
|
+
# @api private
|
406
|
+
sig(:final) do
|
310
407
|
override
|
311
408
|
.params(value: T.any(T::Hash[T.anything, T.anything], T.anything))
|
312
|
-
.returns(T.any(
|
409
|
+
.returns(T.any(TerminalShop::Util::AnyHash, T.anything))
|
313
410
|
end
|
314
411
|
def dump(value)
|
315
412
|
end
|
316
413
|
|
317
|
-
|
414
|
+
# @api private
|
415
|
+
sig(:final) do
|
318
416
|
override
|
319
417
|
.params(value: T.anything)
|
320
418
|
.returns(T.any([T::Boolean, T.anything, NilClass], [T::Boolean, T::Boolean, Integer]))
|
@@ -322,33 +420,39 @@ module TerminalShop
|
|
322
420
|
def try_strict_coerce(value)
|
323
421
|
end
|
324
422
|
|
325
|
-
|
423
|
+
# @api private
|
424
|
+
sig(:final) { returns(T.anything) }
|
326
425
|
protected def item_type
|
327
426
|
end
|
328
427
|
|
329
|
-
|
428
|
+
# @api private
|
429
|
+
sig(:final) do
|
330
430
|
params(
|
331
431
|
type_info: T.any(
|
332
|
-
|
432
|
+
TerminalShop::Util::AnyHash,
|
333
433
|
T.proc.returns(TerminalShop::Converter::Input),
|
334
434
|
TerminalShop::Converter::Input
|
335
435
|
),
|
336
|
-
spec:
|
436
|
+
spec: TerminalShop::Util::AnyHash
|
337
437
|
)
|
338
|
-
.
|
438
|
+
.void
|
339
439
|
end
|
340
|
-
def
|
440
|
+
def initialize(type_info, spec = {})
|
341
441
|
end
|
342
442
|
end
|
343
443
|
|
344
444
|
class BaseModel
|
345
|
-
abstract!
|
346
|
-
|
347
445
|
extend TerminalShop::Converter
|
348
446
|
|
447
|
+
abstract!
|
448
|
+
|
349
449
|
KnownFieldShape = T.type_alias { {mode: T.nilable(Symbol), required: T::Boolean} }
|
350
450
|
|
351
451
|
class << self
|
452
|
+
# @api private
|
453
|
+
#
|
454
|
+
# Assumes superclass fields are totally defined before fields are accessed /
|
455
|
+
# defined on subclasses.
|
352
456
|
sig do
|
353
457
|
returns(
|
354
458
|
T::Hash[
|
@@ -363,6 +467,12 @@ module TerminalShop
|
|
363
467
|
def known_fields
|
364
468
|
end
|
365
469
|
|
470
|
+
# @api private
|
471
|
+
sig { returns(T::Hash[Symbol, Symbol]) }
|
472
|
+
def reverse_map
|
473
|
+
end
|
474
|
+
|
475
|
+
# @api private
|
366
476
|
sig do
|
367
477
|
returns(
|
368
478
|
T::Hash[Symbol,
|
@@ -372,10 +482,12 @@ module TerminalShop
|
|
372
482
|
def fields
|
373
483
|
end
|
374
484
|
|
485
|
+
# @api private
|
375
486
|
sig { returns(T::Hash[Symbol, T.proc.returns(T::Class[T.anything])]) }
|
376
487
|
def defaults
|
377
488
|
end
|
378
489
|
|
490
|
+
# @api private
|
379
491
|
sig do
|
380
492
|
params(
|
381
493
|
name_sym: Symbol,
|
@@ -391,47 +503,56 @@ module TerminalShop
|
|
391
503
|
T.proc.returns(TerminalShop::Converter::Input),
|
392
504
|
TerminalShop::Converter::Input
|
393
505
|
),
|
394
|
-
spec:
|
506
|
+
spec: TerminalShop::Util::AnyHash
|
395
507
|
)
|
396
508
|
.void
|
397
509
|
end
|
398
510
|
private def add_field(name_sym, required:, type_info:, spec:)
|
399
511
|
end
|
400
512
|
|
513
|
+
# @api private
|
401
514
|
sig do
|
402
515
|
params(
|
403
516
|
name_sym: Symbol,
|
404
517
|
type_info: T.any(
|
405
|
-
|
518
|
+
TerminalShop::Util::AnyHash,
|
406
519
|
T.proc.returns(TerminalShop::Converter::Input),
|
407
520
|
TerminalShop::Converter::Input
|
408
521
|
),
|
409
|
-
spec:
|
522
|
+
spec: TerminalShop::Util::AnyHash
|
410
523
|
)
|
411
524
|
.void
|
412
525
|
end
|
413
526
|
def required(name_sym, type_info, spec = {})
|
414
527
|
end
|
415
528
|
|
529
|
+
# @api private
|
416
530
|
sig do
|
417
531
|
params(
|
418
532
|
name_sym: Symbol,
|
419
533
|
type_info: T.any(
|
420
|
-
|
534
|
+
TerminalShop::Util::AnyHash,
|
421
535
|
T.proc.returns(TerminalShop::Converter::Input),
|
422
536
|
TerminalShop::Converter::Input
|
423
537
|
),
|
424
|
-
spec:
|
538
|
+
spec: TerminalShop::Util::AnyHash
|
425
539
|
)
|
426
540
|
.void
|
427
541
|
end
|
428
542
|
def optional(name_sym, type_info, spec = {})
|
429
543
|
end
|
430
544
|
|
545
|
+
# @api private
|
546
|
+
#
|
547
|
+
# `request_only` attributes not excluded from `.#coerce` when receiving responses
|
548
|
+
# even if well behaved servers should not send them
|
431
549
|
sig { params(blk: T.proc.void).void }
|
432
550
|
private def request_only(&blk)
|
433
551
|
end
|
434
552
|
|
553
|
+
# @api private
|
554
|
+
#
|
555
|
+
# `response_only` attributes are omitted from `.#dump` when making requests
|
435
556
|
sig { params(blk: T.proc.void).void }
|
436
557
|
private def response_only(&blk)
|
437
558
|
end
|
@@ -442,6 +563,7 @@ module TerminalShop
|
|
442
563
|
end
|
443
564
|
|
444
565
|
class << self
|
566
|
+
# @api private
|
445
567
|
sig do
|
446
568
|
override
|
447
569
|
.params(value: T.any(TerminalShop::BaseModel, T::Hash[T.anything, T.anything], T.anything))
|
@@ -450,6 +572,7 @@ module TerminalShop
|
|
450
572
|
def coerce(value)
|
451
573
|
end
|
452
574
|
|
575
|
+
# @api private
|
453
576
|
sig do
|
454
577
|
override
|
455
578
|
.params(value: T.any(T.attached_class, T.anything))
|
@@ -458,6 +581,7 @@ module TerminalShop
|
|
458
581
|
def dump(value)
|
459
582
|
end
|
460
583
|
|
584
|
+
# @api private
|
461
585
|
sig do
|
462
586
|
override
|
463
587
|
.params(value: T.anything)
|
@@ -467,20 +591,45 @@ module TerminalShop
|
|
467
591
|
end
|
468
592
|
end
|
469
593
|
|
594
|
+
# Returns the raw value associated with the given key, if found. Otherwise, nil is
|
595
|
+
# returned.
|
596
|
+
#
|
597
|
+
# It is valid to lookup keys that are not in the API spec, for example to access
|
598
|
+
# undocumented features. This method does not parse response data into
|
599
|
+
# higher-level types. Lookup by anything other than a Symbol is an ArgumentError.
|
470
600
|
sig { params(key: Symbol).returns(T.nilable(T.anything)) }
|
471
601
|
def [](key)
|
472
602
|
end
|
473
603
|
|
474
|
-
|
604
|
+
# Returns a Hash of the data underlying this object. O(1)
|
605
|
+
#
|
606
|
+
# Keys are Symbols and values are the raw values from the response. The return
|
607
|
+
# value indicates which values were ever set on the object. i.e. there will be a
|
608
|
+
# key in this hash if they ever were, even if the set value was nil.
|
609
|
+
#
|
610
|
+
# This method is not recursive. The returned value is shared by the object, so it
|
611
|
+
# should not be mutated.
|
612
|
+
sig { overridable.returns(TerminalShop::Util::AnyHash) }
|
475
613
|
def to_h
|
476
614
|
end
|
477
615
|
|
478
|
-
|
616
|
+
# Returns a Hash of the data underlying this object. O(1)
|
617
|
+
#
|
618
|
+
# Keys are Symbols and values are the raw values from the response. The return
|
619
|
+
# value indicates which values were ever set on the object. i.e. there will be a
|
620
|
+
# key in this hash if they ever were, even if the set value was nil.
|
621
|
+
#
|
622
|
+
# This method is not recursive. The returned value is shared by the object, so it
|
623
|
+
# should not be mutated.
|
624
|
+
sig { overridable.returns(TerminalShop::Util::AnyHash) }
|
625
|
+
def to_hash
|
626
|
+
end
|
479
627
|
|
480
|
-
sig { params(keys: T.nilable(T::Array[Symbol])).returns(
|
628
|
+
sig { params(keys: T.nilable(T::Array[Symbol])).returns(TerminalShop::Util::AnyHash) }
|
481
629
|
def deconstruct_keys(keys)
|
482
630
|
end
|
483
631
|
|
632
|
+
# Create a new instance of a model.
|
484
633
|
sig { params(data: T.any(T::Hash[Symbol, T.anything], T.self_type)).returns(T.attached_class) }
|
485
634
|
def self.new(data = {})
|
486
635
|
end
|