sorbet-schema 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca60916d410548d1a3e628556255d5234b953d238d31de3c0177bc658b8b9516
4
- data.tar.gz: ac60ef4cae335b0d97b2a6722f86447198d5fd2713ddb65b2f8ffec8bd1b8e5d
3
+ metadata.gz: ca90775e4837946637599b38d56387f984dd670ccf40b10b4e99c5ac83f6bb51
4
+ data.tar.gz: 571a777f61bc5e01529ce32b3b4fe7f38a224b36f0aff511b569beec9b68d28d
5
5
  SHA512:
6
- metadata.gz: d578b04600bab5767764a211507c8aaed6c6cf472ccad27e56ad1caddca3d3133f7ccdf12f2ebf1b3754cb017fc6a972782e992fa75ca2c1a16395ee9ea53497
7
- data.tar.gz: 55fcfed95cb16ef9fe3d4ad9ad9fbd2513561eda0152c2d8346fdea370a68b64c3773787ca3c03067ed6ea033d638bb4f83557ea7de851126ad59ea3cc0ce39b
6
+ metadata.gz: cc598d7b96ca9afed3c662b8cbd2473e5c49254b55249439efe3d4407088dca7f12ad683d010d05af17db95dbac7afaa8994066d54d5032db0ed1f811e6cdc41
7
+ data.tar.gz: e01498f7da67da3f49114775c22b799d93630d6205ca95ff5197e11b21bb55069c67a01f007f0e7e609c7f2848ef3f783e3cdb2afd9d9a0901bb7fab63430c8a
data/CHANGELOG.md CHANGED
@@ -4,6 +4,24 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.9.1](https://github.com/maxveldink/sorbet-schema/compare/v0.9.0...v0.9.1) (2024-08-14)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * add sorbet-schema shim for better T:Struct extension compatability ([#123](https://github.com/maxveldink/sorbet-schema/issues/123)) ([b47cafb](https://github.com/maxveldink/sorbet-schema/commit/b47cafb9820141c7e8e7759e3a561f23bc01f9aa))
13
+
14
+ ## [0.9.0](https://github.com/maxveldink/sorbet-schema/compare/v0.8.0...v0.9.0) (2024-08-05)
15
+
16
+
17
+ ### ⚠ BREAKING CHANGES
18
+
19
+ * Replace deeply_nested_hash with options passing in struct ext ([#121](https://github.com/maxveldink/sorbet-schema/issues/121))
20
+
21
+ ### Code Refactoring
22
+
23
+ * Replace deeply_nested_hash with options passing in struct ext ([#121](https://github.com/maxveldink/sorbet-schema/issues/121)) ([48da547](https://github.com/maxveldink/sorbet-schema/commit/48da54733ee29af92605824da40ba39f0fe3f8a0))
24
+
7
25
  ## [0.8.0](https://github.com/maxveldink/sorbet-schema/compare/v0.7.2...v0.8.0) (2024-07-19)
8
26
 
9
27
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorbet-schema (0.8.0)
4
+ sorbet-schema (0.9.1)
5
5
  sorbet-result (~> 1.1)
6
6
  sorbet-runtime (~> 0.5)
7
7
  sorbet-struct-comparable (~> 1.3)
@@ -10,7 +10,7 @@ class SerializeValue
10
10
  elsif value.is_a?(Array)
11
11
  value.map { |item| serialize(item) }
12
12
  elsif value.is_a?(T::Struct)
13
- value.serialize_to(:deeply_nested_hash).payload_or(value)
13
+ value.serialize_to(:hash, options: {should_serialize_values: true}).payload_or(value)
14
14
  elsif value.respond_to?(:serialize)
15
15
  value.serialize
16
16
  else
@@ -1,24 +1,16 @@
1
- # typed: strict
1
+ # typed: true
2
2
 
3
3
  module T
4
4
  class Struct
5
- extend T::Sig
6
-
7
5
  class << self
8
- extend T::Sig
9
-
10
- sig { overridable.returns(Typed::Schema) }
11
6
  def schema
12
7
  Typed::Schema.from_struct(self)
13
8
  end
14
9
 
15
- sig { params(type: Symbol).returns(Typed::Serializer[T.untyped, T.untyped]) }
16
- def serializer(type)
10
+ def serializer(type, options: {})
17
11
  case type
18
- when :deeply_nested_hash
19
- Typed::HashSerializer.new(schema:, should_serialize_values: true)
20
12
  when :hash
21
- Typed::HashSerializer.new(schema:)
13
+ Typed::HashSerializer.new(**T.unsafe({schema:, **options}))
22
14
  when :json
23
15
  Typed::JSONSerializer.new(schema:)
24
16
  else
@@ -26,15 +18,13 @@ module T
26
18
  end
27
19
  end
28
20
 
29
- sig { params(serializer_type: Symbol, source: T.untyped).returns(Typed::Serializer::DeserializeResult) }
30
- def deserialize_from(serializer_type, source)
31
- serializer(serializer_type).deserialize(source)
21
+ def deserialize_from(serializer_type, source, options: {})
22
+ T.unsafe(serializer(serializer_type, options:).deserialize(source))
32
23
  end
33
24
  end
34
25
 
35
- sig { params(serializer_type: Symbol).returns(Typed::Result[T.untyped, Typed::SerializeError]) }
36
- def serialize_to(serializer_type)
37
- self.class.serializer(serializer_type).serialize(self)
26
+ def serialize_to(serializer_type, options: {})
27
+ self.class.serializer(serializer_type, options:).serialize(self)
38
28
  end
39
29
  end
40
30
  end
@@ -1,5 +1,5 @@
1
1
  # typed: strict
2
2
 
3
3
  module SorbetSchema
4
- VERSION = "0.8.0"
4
+ VERSION = "0.9.1"
5
5
  end
@@ -0,0 +1,21 @@
1
+ # typed: strict
2
+
3
+ class T::Struct
4
+ class << self
5
+ sig { overridable.returns(Typed::Schema) }
6
+ def schema
7
+ end
8
+
9
+ sig { params(type: Symbol, options: T::Hash[Symbol, T.untyped]).returns(Typed::Serializer[T.untyped, T.untyped]) }
10
+ def serializer(type, options: {})
11
+ end
12
+
13
+ sig { params(serializer_type: Symbol, source: T.untyped, options: T::Hash[Symbol, T.untyped]).returns(Typed::Result[T.attached_class, Typed::DeserializeError]) }
14
+ def deserialize_from(serializer_type, source, options: {})
15
+ end
16
+ end
17
+
18
+ sig { params(serializer_type: Symbol, options: T::Hash[Symbol, T.untyped]).returns(Typed::Result[T.untyped, Typed::SerializeError]) }
19
+ def serialize_to(serializer_type, options: {})
20
+ end
21
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sorbet-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max VelDink
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-07-19 00:00:00.000000000 Z
11
+ date: 2024-08-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-result
@@ -121,6 +121,7 @@ files:
121
121
  - lib/typed/validations/validated_value.rb
122
122
  - lib/typed/validations/validation_error.rb
123
123
  - lib/typed/validations/validation_results.rb
124
+ - rbi/sorbet-schema.rbi
124
125
  - release-please-config.json
125
126
  - release-please-manifest.json
126
127
  - sorbet/config
@@ -182,6 +183,7 @@ post_install_message:
182
183
  rdoc_options: []
183
184
  require_paths:
184
185
  - lib
186
+ - rbi
185
187
  required_ruby_version: !ruby/object:Gem::Requirement
186
188
  requirements:
187
189
  - - ">="