sorbet-schema 0.7.2 → 0.9.0

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: 90b806c8a8d85102efd76868966f5d7ade60e2839871171bf081f8fb87483410
4
- data.tar.gz: d72faf1ab20dd344c30cbf44f01f9dff090c88c97ed6f53dd945042a5de450eb
3
+ metadata.gz: 2804e93c849ae225b0e969c926e6d45598d046cba32597de495fbbf2c9403e05
4
+ data.tar.gz: c05a05390f42cc2ccb023fa5cd162544e6797acfdf7e5166169389e018d2ac91
5
5
  SHA512:
6
- metadata.gz: ffe227e1a7c2d964001c4ab1e7510f5efc43e6b17f3108a3706eba384e67f20af4a8042ded06e6130999c87f57dd73270c55fe409f61d2d6dee067638ffbfc2b
7
- data.tar.gz: 5fa47438c966fb08bb1987b3deb54bb3c8010f740c50e062df2c7d1827721d6f6a7c4283817ec21ec0dc618df4b20dc43f48f9344c18ce87fc79ad8ce0250e12
6
+ metadata.gz: 64b8c9f6c3178a37403f53e8117f417fa3de6f9ec867fc32abf11693e9a547effedce3602325518d539a27e342670ceaf2a6bd52096c69f8c082a819f838d177
7
+ data.tar.gz: 948b563c632f8f599035ff93a17f779c1c18ecf002c484bfda3667874f83a41408ae3c5434d8122dc8f7cf085cf948f271ecd598219fb4e7b93eea5e8e174c55
data/CHANGELOG.md CHANGED
@@ -4,6 +4,28 @@ 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.0](https://github.com/maxveldink/sorbet-schema/compare/v0.8.0...v0.9.0) (2024-08-05)
8
+
9
+
10
+ ### ⚠ BREAKING CHANGES
11
+
12
+ * Replace deeply_nested_hash with options passing in struct ext ([#121](https://github.com/maxveldink/sorbet-schema/issues/121))
13
+
14
+ ### Code Refactoring
15
+
16
+ * 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))
17
+
18
+ ## [0.8.0](https://github.com/maxveldink/sorbet-schema/compare/v0.7.2...v0.8.0) (2024-07-19)
19
+
20
+
21
+ ### ⚠ BREAKING CHANGES
22
+
23
+ * Ensure that nested structs will deeply serialize ([#118](https://github.com/maxveldink/sorbet-schema/issues/118))
24
+
25
+ ### Bug Fixes
26
+
27
+ * Ensure that nested structs will deeply serialize ([#118](https://github.com/maxveldink/sorbet-schema/issues/118)) ([9216d02](https://github.com/maxveldink/sorbet-schema/commit/9216d028fec806540ec6763ec941e1422eb30357))
28
+
7
29
  ## [0.7.2](https://github.com/maxveldink/sorbet-schema/compare/v0.7.1...v0.7.2) (2024-07-11)
8
30
 
9
31
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorbet-schema (0.7.2)
4
+ sorbet-schema (0.9.0)
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(: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
@@ -12,11 +12,11 @@ module T
12
12
  Typed::Schema.from_struct(self)
13
13
  end
14
14
 
15
- sig { params(type: Symbol).returns(Typed::Serializer[T.untyped, T.untyped]) }
16
- def serializer(type)
15
+ sig { params(type: Symbol, options: T::Hash[Symbol, T.untyped]).returns(Typed::Serializer[T.untyped, T.untyped]) }
16
+ def serializer(type, options: {})
17
17
  case type
18
18
  when :hash
19
- Typed::HashSerializer.new(schema:)
19
+ Typed::HashSerializer.new(**T.unsafe({schema:, **options}))
20
20
  when :json
21
21
  Typed::JSONSerializer.new(schema:)
22
22
  else
@@ -24,15 +24,15 @@ module T
24
24
  end
25
25
  end
26
26
 
27
- sig { params(serializer_type: Symbol, source: T.untyped).returns(Typed::Serializer::DeserializeResult) }
28
- def deserialize_from(serializer_type, source)
29
- serializer(serializer_type).deserialize(source)
27
+ sig { params(serializer_type: Symbol, source: T.untyped, options: T::Hash[Symbol, T.untyped]).returns(Typed::Serializer::DeserializeResult) }
28
+ def deserialize_from(serializer_type, source, options: {})
29
+ serializer(serializer_type, options:).deserialize(source)
30
30
  end
31
31
  end
32
32
 
33
- sig { params(serializer_type: Symbol).returns(Typed::Result[T.untyped, Typed::SerializeError]) }
34
- def serialize_to(serializer_type)
35
- self.class.serializer(serializer_type).serialize(self)
33
+ sig { params(serializer_type: Symbol, options: T::Hash[Symbol, T.untyped]).returns(Typed::Result[T.untyped, Typed::SerializeError]) }
34
+ def serialize_to(serializer_type, options: {})
35
+ self.class.serializer(serializer_type, options:).serialize(self)
36
36
  end
37
37
  end
38
38
  end
@@ -1,5 +1,5 @@
1
1
  # typed: strict
2
2
 
3
3
  module SorbetSchema
4
- VERSION = "0.7.2"
4
+ VERSION = "0.9.0"
5
5
  end
@@ -6,6 +6,9 @@ module Typed
6
6
  Input = type_member { {fixed: InputHash} }
7
7
  Output = type_member { {fixed: Params} }
8
8
 
9
+ sig { returns(T::Boolean) }
10
+ attr_reader :should_serialize_values
11
+
9
12
  sig { params(schema: Schema, should_serialize_values: T::Boolean).void }
10
13
  def initialize(schema:, should_serialize_values: false)
11
14
  @should_serialize_values = should_serialize_values
@@ -24,10 +27,5 @@ module Typed
24
27
 
25
28
  Success.new(serialize_from_struct(struct:, should_serialize_values:))
26
29
  end
27
-
28
- private
29
-
30
- sig { returns(T::Boolean) }
31
- attr_reader :should_serialize_values
32
30
  end
33
31
  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.7.2
4
+ version: 0.9.0
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-11 00:00:00.000000000 Z
11
+ date: 2024-08-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-result