terminal-shop 3.8.9 → 3.8.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7f5c4f7f56e756435c0a707cc2fcf9255fa738d5cfcd05a1a65763ec528f7cc
4
- data.tar.gz: abbe65c733114e77044e9e991ad6f122a52aefd6cf5e6b9d0f93f8993395b56d
3
+ metadata.gz: 735ea5c13eb9d20e691914ed8abc5c3d621d01c931f378aa683800ab7d24e688
4
+ data.tar.gz: 2b1d08ff276e9ff2ff6e2ae1038d32421bf29ec0151706edfa11a67f745b6cc7
5
5
  SHA512:
6
- metadata.gz: dfa49b7b447bdf9e4c14767d138f8a78b994dbd03cd33aefb86f420d41a232ad836c18184d8b4cbc097ccc98f1db0ae2beb2e32a3d33932ef056d5c1d89e85c1
7
- data.tar.gz: 7162025bcb37db82ca0b4f34150f89fafe2446b2ad5c92b06a0ca53b8a3d84fb64f33a74a21ccffc892067d5b949fce6b41530a4d8554ddfe76b30e4d970825f
6
+ metadata.gz: 3418f0d40cb1cbc90a4a69642e913c5207059c596cc7b1ff9682ec048f375af51d727079c888558c3ddaaada8d90471f94bd4d19bf2285f729a51d0d2e3309fb
7
+ data.tar.gz: cf043f4d72df8b85f7c1ae530afbb80cf7f9bad4fa3612044fe9e90e7ab74bb3f4fb7a3fabcd314d4be20574c6e81dc02503ea1cabd3aa52f9043b952fd633f2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.8.10 (2025-08-20)
4
+
5
+ Full Changelog: [v3.8.9...v3.8.10](https://github.com/terminaldotshop/terminal-sdk-ruby/compare/v3.8.9...v3.8.10)
6
+
7
+ ### Bug Fixes
8
+
9
+ * bump sorbet version and fix new type errors from the breaking change ([b8a165c](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/b8a165c99dda340d95ee12680ad4a662dae84adb))
10
+
11
+
12
+ ### Chores
13
+
14
+ * collect metadata from type DSL ([48d6bd6](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/48d6bd6aef75e097d4fac1e87680a56194a46849))
15
+ * **internal:** update comment in script ([29e8d0e](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/29e8d0ee82f862af88091ce124082f798a73d52f))
16
+ * update @stainless-api/prism-cli to v5.15.0 ([c859658](https://github.com/terminaldotshop/terminal-sdk-ruby/commit/c85965842c1dd5e37ed2f37010a8dfa096f12147))
17
+
3
18
  ## 3.8.9 (2025-08-05)
4
19
 
5
20
  Full Changelog: [v3.8.8...v3.8.9](https://github.com/terminaldotshop/terminal-sdk-ruby/compare/v3.8.8...v3.8.9)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "terminal-shop", "~> 3.8.9"
20
+ gem "terminal-shop", "~> 3.8.10"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -367,10 +367,7 @@ module TerminalShop
367
367
  # @return [Array(Integer, Net::HTTPResponse, Enumerable<String>)]
368
368
  def send_request(request, redirect_count:, retry_count:, send_retry_header:)
369
369
  url, headers, max_retries, timeout = request.fetch_values(:url, :headers, :max_retries, :timeout)
370
- input = {
371
- **request.except(:timeout),
372
- deadline: TerminalShop::Internal::Util.monotonic_secs + timeout
373
- }
370
+ input = {**request.except(:timeout), deadline: TerminalShop::Internal::Util.monotonic_secs + timeout}
374
371
 
375
372
  if send_retry_header
376
373
  headers["x-stainless-retry-count"] = retry_count.to_s
@@ -193,15 +193,7 @@ module TerminalShop
193
193
  end
194
194
 
195
195
  define_sorbet_constant!(:Request) do
196
- T.type_alias do
197
- {
198
- method: Symbol,
199
- url: URI::Generic,
200
- headers: T::Hash[String, String],
201
- body: T.anything,
202
- deadline: Float
203
- }
204
- end
196
+ T.type_alias { {method: Symbol, url: URI::Generic, headers: T::Hash[String, String], body: T.anything, deadline: Float} }
205
197
  end
206
198
  end
207
199
  end
@@ -148,6 +148,7 @@ module TerminalShop
148
148
  # @option spec [Boolean] :"nil?"
149
149
  def initialize(type_info, spec = {})
150
150
  @item_type_fn = TerminalShop::Internal::Type::Converter.type_info(type_info || spec)
151
+ @meta = TerminalShop::Internal::Type::Converter.meta_info(type_info, spec)
151
152
  @nilable = spec.fetch(:nil?, false)
152
153
  end
153
154
 
@@ -52,6 +52,7 @@ module TerminalShop
52
52
  #
53
53
  # @option spec [Boolean] :"nil?"
54
54
  private def add_field(name_sym, required:, type_info:, spec:)
55
+ meta = TerminalShop::Internal::Type::Converter.meta_info(type_info, spec)
55
56
  type_fn, info =
56
57
  case type_info
57
58
  in Proc | TerminalShop::Internal::Type::Converter | Class
@@ -63,14 +64,7 @@ module TerminalShop
63
64
  setter = :"#{name_sym}="
64
65
  api_name = info.fetch(:api_name, name_sym)
65
66
  nilable = info.fetch(:nil?, false)
66
- const = if required && !nilable
67
- info.fetch(
68
- :const,
69
- TerminalShop::Internal::OMIT
70
- )
71
- else
72
- TerminalShop::Internal::OMIT
73
- end
67
+ const = required && !nilable ? info.fetch(:const, TerminalShop::Internal::OMIT) : TerminalShop::Internal::OMIT
74
68
 
75
69
  [name_sym, setter].each { undef_method(_1) } if known_fields.key?(name_sym)
76
70
 
@@ -81,7 +75,8 @@ module TerminalShop
81
75
  required: required,
82
76
  nilable: nilable,
83
77
  const: const,
84
- type_fn: type_fn
78
+ type_fn: type_fn,
79
+ meta: meta
85
80
  }
86
81
 
87
82
  define_method(setter) do |value|
@@ -98,6 +98,33 @@ module TerminalShop
98
98
  end
99
99
  end
100
100
 
101
+ # @api private
102
+ #
103
+ # @param type_info [Hash{Symbol=>Object}, Proc, TerminalShop::Internal::Type::Converter, Class] .
104
+ #
105
+ # @option type_info [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
106
+ #
107
+ # @option type_info [Proc] :enum
108
+ #
109
+ # @option type_info [Proc] :union
110
+ #
111
+ # @option type_info [Boolean] :"nil?"
112
+ #
113
+ # @param spec [Hash{Symbol=>Object}, Proc, TerminalShop::Internal::Type::Converter, Class] .
114
+ #
115
+ # @option spec [NilClass, TrueClass, FalseClass, Integer, Float, Symbol] :const
116
+ #
117
+ # @option spec [Proc] :enum
118
+ #
119
+ # @option spec [Proc] :union
120
+ #
121
+ # @option spec [Boolean] :"nil?"
122
+ #
123
+ # @return [Hash{Symbol=>Object}]
124
+ def meta_info(type_info, spec)
125
+ [spec, type_info].grep(Hash).first.to_h.except(:const, :enum, :union, :nil?)
126
+ end
127
+
101
128
  # @api private
102
129
  #
103
130
  # @param translate_names [Boolean]
@@ -168,6 +168,7 @@ module TerminalShop
168
168
  # @option spec [Boolean] :"nil?"
169
169
  def initialize(type_info, spec = {})
170
170
  @item_type_fn = TerminalShop::Internal::Type::Converter.type_info(type_info || spec)
171
+ @meta = TerminalShop::Internal::Type::Converter.meta_info(type_info, spec)
171
172
  @nilable = spec.fetch(:nil?, false)
172
173
  end
173
174
 
@@ -12,20 +12,20 @@ module TerminalShop
12
12
  #
13
13
  # All of the specified variant info for this union.
14
14
  #
15
- # @return [Array<Array(Symbol, Proc)>]
15
+ # @return [Array<Array(Symbol, Proc, Hash{Symbol=>Object})>]
16
16
  private def known_variants = (@known_variants ||= [])
17
17
 
18
18
  # @api private
19
19
  #
20
- # @return [Array<Array(Symbol, Object)>]
20
+ # @return [Array<Array(Symbol, Object, Hash{Symbol=>Object})>]
21
21
  protected def derefed_variants
22
- known_variants.map { |key, variant_fn| [key, variant_fn.call] }
22
+ known_variants.map { |key, variant_fn, meta| [key, variant_fn.call, meta] }
23
23
  end
24
24
 
25
25
  # All of the specified variants for this union.
26
26
  #
27
27
  # @return [Array<Object>]
28
- def variants = derefed_variants.map(&:last)
28
+ def variants = derefed_variants.map { _2 }
29
29
 
30
30
  # @api private
31
31
  #
@@ -51,12 +51,13 @@ module TerminalShop
51
51
  #
52
52
  # @option spec [Boolean] :"nil?"
53
53
  private def variant(key, spec = nil)
54
+ meta = TerminalShop::Internal::Type::Converter.meta_info(nil, spec)
54
55
  variant_info =
55
56
  case key
56
57
  in Symbol
57
- [key, TerminalShop::Internal::Type::Converter.type_info(spec)]
58
+ [key, TerminalShop::Internal::Type::Converter.type_info(spec), meta]
58
59
  in Proc | TerminalShop::Internal::Type::Converter | Class | Hash
59
- [nil, TerminalShop::Internal::Type::Converter.type_info(key)]
60
+ [nil, TerminalShop::Internal::Type::Converter.type_info(key), meta]
60
61
  end
61
62
 
62
63
  known_variants << variant_info
@@ -79,7 +80,8 @@ module TerminalShop
79
80
  return nil if key == TerminalShop::Internal::OMIT
80
81
 
81
82
  key = key.to_sym if key.is_a?(String)
82
- known_variants.find { |k,| k == key }&.last&.call
83
+ _, found = known_variants.find { |k,| k == key }
84
+ found&.call
83
85
  else
84
86
  nil
85
87
  end
@@ -244,7 +244,7 @@ module TerminalShop
244
244
  #
245
245
  # @return [String]
246
246
  def uri_origin(uri)
247
- "#{uri.scheme}://#{uri.host}#{uri.port == uri.default_port ? '' : ":#{uri.port}"}"
247
+ "#{uri.scheme}://#{uri.host}#{":#{uri.port}" unless uri.port == uri.default_port}"
248
248
  end
249
249
 
250
250
  # @api private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TerminalShop
4
- VERSION = "3.8.9"
4
+ VERSION = "3.8.10"
5
5
  end
@@ -59,10 +59,10 @@ module TerminalShop
59
59
  end
60
60
 
61
61
  class APIConnectionError < TerminalShop::Errors::APIError
62
- sig { void }
62
+ sig { returns(NilClass) }
63
63
  attr_accessor :status
64
64
 
65
- sig { void }
65
+ sig { returns(NilClass) }
66
66
  attr_accessor :body
67
67
 
68
68
  # @api private
@@ -92,6 +92,64 @@ module TerminalShop
92
92
  def self.type_info(spec)
93
93
  end
94
94
 
95
+ # @api private
96
+ sig do
97
+ params(
98
+ type_info:
99
+ T.any(
100
+ {
101
+ const:
102
+ T.nilable(
103
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
104
+ ),
105
+ enum:
106
+ T.nilable(
107
+ T.proc.returns(
108
+ TerminalShop::Internal::Type::Converter::Input
109
+ )
110
+ ),
111
+ union:
112
+ T.nilable(
113
+ T.proc.returns(
114
+ TerminalShop::Internal::Type::Converter::Input
115
+ )
116
+ )
117
+ },
118
+ T.proc.returns(
119
+ TerminalShop::Internal::Type::Converter::Input
120
+ ),
121
+ TerminalShop::Internal::Type::Converter::Input
122
+ ),
123
+ spec:
124
+ T.any(
125
+ {
126
+ const:
127
+ T.nilable(
128
+ T.any(NilClass, T::Boolean, Integer, Float, Symbol)
129
+ ),
130
+ enum:
131
+ T.nilable(
132
+ T.proc.returns(
133
+ TerminalShop::Internal::Type::Converter::Input
134
+ )
135
+ ),
136
+ union:
137
+ T.nilable(
138
+ T.proc.returns(
139
+ TerminalShop::Internal::Type::Converter::Input
140
+ )
141
+ )
142
+ },
143
+ T.proc.returns(
144
+ TerminalShop::Internal::Type::Converter::Input
145
+ ),
146
+ TerminalShop::Internal::Type::Converter::Input
147
+ )
148
+ ).returns(TerminalShop::Internal::AnyHash)
149
+ end
150
+ def self.meta_info(type_info, spec)
151
+ end
152
+
95
153
  # @api private
96
154
  sig do
97
155
  params(translate_names: T::Boolean).returns(
@@ -16,7 +16,8 @@ module TerminalShop
16
16
  T::Array[
17
17
  [
18
18
  T.nilable(Symbol),
19
- T.proc.returns(TerminalShop::Internal::Type::Converter::Input)
19
+ T.proc.returns(TerminalShop::Internal::Type::Converter::Input),
20
+ TerminalShop::Internal::AnyHash
20
21
  ]
21
22
  ]
22
23
  )
@@ -25,7 +26,13 @@ module TerminalShop
25
26
  end
26
27
 
27
28
  # @api private
28
- sig { returns(T::Array[[T.nilable(Symbol), T.anything]]) }
29
+ sig do
30
+ returns(
31
+ T::Array[
32
+ [T.nilable(Symbol), T.anything, TerminalShop::Internal::AnyHash]
33
+ ]
34
+ )
35
+ end
29
36
  protected def derefed_variants
30
37
  end
31
38
 
@@ -39,6 +39,23 @@ module TerminalShop
39
39
  | TerminalShop::Internal::Type::Converter::input spec
40
40
  ) -> (^-> top)
41
41
 
42
+ def self.meta_info: (
43
+ {
44
+ const: (nil | bool | Integer | Float | Symbol)?,
45
+ enum: ^-> TerminalShop::Internal::Type::Converter::input?,
46
+ union: ^-> TerminalShop::Internal::Type::Converter::input?
47
+ }
48
+ | ^-> TerminalShop::Internal::Type::Converter::input
49
+ | TerminalShop::Internal::Type::Converter::input type_info,
50
+ {
51
+ const: (nil | bool | Integer | Float | Symbol)?,
52
+ enum: ^-> TerminalShop::Internal::Type::Converter::input?,
53
+ union: ^-> TerminalShop::Internal::Type::Converter::input?
54
+ }
55
+ | ^-> TerminalShop::Internal::Type::Converter::input
56
+ | TerminalShop::Internal::Type::Converter::input spec
57
+ ) -> ::Hash[Symbol, top]
58
+
42
59
  def self.new_coerce_state: (
43
60
  ?translate_names: bool
44
61
  ) -> TerminalShop::Internal::Type::Converter::coerce_state
@@ -5,9 +5,9 @@ module TerminalShop
5
5
  include TerminalShop::Internal::Type::Converter
6
6
  include TerminalShop::Internal::Util::SorbetRuntimeSupport
7
7
 
8
- private def self.known_variants: -> ::Array[[Symbol?, (^-> TerminalShop::Internal::Type::Converter::input)]]
8
+ private def self.known_variants: -> ::Array[[Symbol?, (^-> TerminalShop::Internal::Type::Converter::input), ::Hash[Symbol, top]]]
9
9
 
10
- def self.derefed_variants: -> ::Array[[Symbol?, top]]
10
+ def self.derefed_variants: -> ::Array[[Symbol?, top, ::Hash[Symbol, top]]]
11
11
 
12
12
  def self.variants: -> ::Array[top]
13
13
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terminal-shop
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.8.9
4
+ version: 3.8.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Terminal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-05 00:00:00.000000000 Z
11
+ date: 2025-08-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: connection_pool