dry-schema 1.15.0 → 1.16.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 48a743cd7cfe494c08539e1e5bc0cf7a46080f7b5e96ec3fb5c9bd78dfffbcfe
4
- data.tar.gz: f1aca50cd5f9168017e87e1792300b5c34bc4095b80c684a11fe7fb28a1135ee
3
+ metadata.gz: ce2440afbba3089de774ca5530bfd7c4f90b5b0f8acea71966338e82f886f529
4
+ data.tar.gz: 4744b85d16b35226f68989fbe71475993a39e4b5d16ff1938153de5d6be20653
5
5
  SHA512:
6
- metadata.gz: e22a6b451d636701801600e6b6817887e25ae0ebae4cfcc5a2676bc79d1ad9d7c33674c490ca970d5b2d34f8aebf8abdb8b88e805f006601cb9f116f5ce9eeef
7
- data.tar.gz: 06d1c08f70d8a30c4efb6ff3acee6962587a9f1a7520609f8cd7695acb2570f4324cfccc81aa68b45e7fed93307bc2f49d613bd34d7e00aa719f23de58df6baa
6
+ metadata.gz: ec0ce1cdab7a5568d498eebf91489bd9adc694be9936e2915c70d306f7efc72eb311a90da8720462aa7779b313f673be459fb9dbc73381b78759624cd5027c69
7
+ data.tar.gz: c4b809bd4f597654f8f8f4aaa19b3056bc574275f5df0f55bab19530c7e6da1e0165ab01e54761ba62196d432220534be02f87ef4a654989645dc8d22d692c78
data/CHANGELOG.md CHANGED
@@ -19,7 +19,35 @@ and this project adheres to [Break Versioning](https://www.taoensso.com/break-ve
19
19
 
20
20
  ### Security
21
21
 
22
- [Unreleased]: https://github.com/dry-rb/dry-schema/compare/v1.15.0...main
22
+ [Unreleased]: https://github.com/dry-rb/dry-schema/compare/v1.16.0...main
23
+
24
+ ## [1.16.0] - 2026-03-03
25
+
26
+ ### Added
27
+
28
+ - Support JRuby (@katafrakt in #512, @timriley in 1a6202f)
29
+
30
+ ### Changed
31
+
32
+ - In JSON Schema output, represent values with an `eql?` constraint as "const" values. (@adamransom in #514)
33
+ ```ruby
34
+ require "dry/schema"
35
+ Dry::Schema.load_extensions(:json_schema)
36
+
37
+ schema = Dry::Schema.JSON do
38
+ required(:version).value(:integer, eql?: 1)
39
+ end
40
+
41
+ schema.json_schema
42
+ # => {"$schema": "http://json-schema.org/draft-06/schema#", type: "object", properties: {version: {type: "integer", const: 1}}, required: ["version"]}
43
+ ```
44
+
45
+ ### Fixed
46
+
47
+ - In JSON Schema output, fix representation of arrays that are a combinations of schemas. (@adamransom in #516)
48
+ - Avoid mutation of arguments given to `Dry::Schema::Messages::I18n#get`. (@flash-gordon in 51d48b6)
49
+
50
+ [1.16.0]: https://github.com/dry-rb/dry-schema/compare/v1.15.0...v1.16.0
23
51
 
24
52
  ## [1.15.0] - 2026-01-09
25
53
 
data/dry-schema.gemspec CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
21
21
  TEXT
22
22
  spec.homepage = "https://dry-rb.org/gems/dry-schema"
23
23
  spec.files = Dir["CHANGELOG.md", "LICENSE", "README.md", "dry-schema.gemspec", "lib/**/*", "config/*.yml"]
24
- spec.bindir = "bin"
25
- spec.executables = []
24
+ spec.bindir = "exe"
25
+ spec.executables = Dir["exe/*"].map { |f| File.basename(f) }
26
26
  spec.require_paths = ["lib"]
27
27
 
28
28
  spec.extra_rdoc_files = ["README.md", "CHANGELOG.md", "LICENSE"]
@@ -41,7 +41,7 @@ Gem::Specification.new do |spec|
41
41
  spec.add_runtime_dependency "dry-configurable", "~> 1.0", ">= 1.0.1"
42
42
  spec.add_runtime_dependency "dry-initializer", "~> 3.2"
43
43
  spec.add_runtime_dependency "dry-logic", "~> 1.6"
44
- spec.add_runtime_dependency "dry-types", "~> 1.8"
44
+ spec.add_runtime_dependency "dry-types", "~> 1.9", ">= 1.9.1"
45
45
  spec.add_development_dependency "bundler"
46
46
  spec.add_development_dependency "rake"
47
47
  spec.add_development_dependency "rspec"
@@ -37,6 +37,7 @@ module Dry
37
37
  true?: {},
38
38
  false?: {},
39
39
  included_in?: {enum: ->(v, _) { v.to_a }},
40
+ eql?: {const: IDENTITY},
40
41
  filled?: EMPTY_HASH,
41
42
  uri?: {format: "uri"},
42
43
  uuid_v1?: {
@@ -133,14 +134,20 @@ module Dry
133
134
 
134
135
  # @api private
135
136
  def visit_or(node, opts = EMPTY_HASH)
137
+ any_of = []
136
138
  node.each do |child|
137
139
  c = self.class.new(loose: loose?)
138
140
  c.keys.update(subschema: {})
139
- c.visit(child, opts.merge(key: :subschema))
140
-
141
- any_of = (keys[opts[:key]][:anyOf] ||= [])
141
+ c.visit(child, opts.except(:member).merge(key: :subschema))
142
142
  any_of << c.keys[:subschema]
143
143
  end
144
+
145
+ target = keys[opts[:key]]
146
+ if target[:type]&.include?("array")
147
+ target[:items] = {anyOf: any_of}
148
+ else
149
+ target[:anyOf] = any_of
150
+ end
144
151
  end
145
152
 
146
153
  # @api private
@@ -32,8 +32,7 @@ module Dry
32
32
  def get(key, options = EMPTY_HASH)
33
33
  return unless key
34
34
 
35
- options[:locale] ||= default_locale
36
- result = t.(key, **options)
35
+ result = t.(key, locale: default_locale, **options)
37
36
 
38
37
  if result.is_a?(Hash)
39
38
  text = result[:text]
@@ -114,9 +113,12 @@ module Dry
114
113
  resolved_key = key?(text_key, opts) ? text_key : key
115
114
 
116
115
  result = t.(resolved_key, **opts)
117
- return result unless result.is_a?(Hash)
118
116
 
119
- result[:text]
117
+ if result.is_a?(::Hash)
118
+ result[:text]
119
+ else
120
+ result
121
+ end
120
122
  end
121
123
 
122
124
  private
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Dry
4
4
  module Schema
5
- VERSION = "1.15.0"
5
+ VERSION = "1.16.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-schema
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.15.0
4
+ version: 1.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hanakai team
8
- bindir: bin
8
+ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
@@ -105,14 +105,20 @@ dependencies:
105
105
  requirements:
106
106
  - - "~>"
107
107
  - !ruby/object:Gem::Version
108
- version: '1.8'
108
+ version: '1.9'
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 1.9.1
109
112
  type: :runtime
110
113
  prerelease: false
111
114
  version_requirements: !ruby/object:Gem::Requirement
112
115
  requirements:
113
116
  - - "~>"
114
117
  - !ruby/object:Gem::Version
115
- version: '1.8'
118
+ version: '1.9'
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ version: 1.9.1
116
122
  - !ruby/object:Gem::Dependency
117
123
  name: bundler
118
124
  requirement: !ruby/object:Gem::Requirement