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 +4 -4
- data/CHANGELOG.md +29 -1
- data/dry-schema.gemspec +3 -3
- data/lib/dry/schema/extensions/json_schema/schema_compiler.rb +10 -3
- data/lib/dry/schema/messages/i18n.rb +6 -4
- data/lib/dry/schema/version.rb +1 -1
- metadata +10 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ce2440afbba3089de774ca5530bfd7c4f90b5b0f8acea71966338e82f886f529
|
|
4
|
+
data.tar.gz: 4744b85d16b35226f68989fbe71475993a39e4b5d16ff1938153de5d6be20653
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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 = "
|
|
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.
|
|
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
|
-
|
|
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
|
|
117
|
+
if result.is_a?(::Hash)
|
|
118
|
+
result[:text]
|
|
119
|
+
else
|
|
120
|
+
result
|
|
121
|
+
end
|
|
120
122
|
end
|
|
121
123
|
|
|
122
124
|
private
|
data/lib/dry/schema/version.rb
CHANGED
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.
|
|
4
|
+
version: 1.16.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hanakai team
|
|
8
|
-
bindir:
|
|
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.
|
|
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.
|
|
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
|