json-schema 4.1.1 → 5.1.1
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/README.md +3 -3
- data/lib/json-schema/attributes/extends.rb +1 -1
- data/lib/json-schema/attributes/patternproperties.rb +1 -1
- data/lib/json-schema/attributes/properties.rb +2 -2
- data/lib/json-schema/attributes/ref.rb +2 -2
- data/lib/json-schema/attributes/required.rb +1 -1
- data/lib/json-schema/errors/validation_error.rb +1 -1
- data/lib/json-schema/schema/validator.rb +1 -1
- data/lib/json-schema/schema.rb +1 -1
- data/lib/json-schema/util/uri.rb +98 -75
- data/lib/json-schema/util/uuid.rb +10 -34
- data/lib/json-schema/validator.rb +5 -5
- metadata +44 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c842fa3f98c7ebbdde9ebdbceb44bb1eab1f282f6a5c6c0008e0aac0eca92b6
|
4
|
+
data.tar.gz: d6f98215e98ce89c007d158594078d7135574543c10a82e953dcb3feed6dc9fb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f744aa3ddcf37191afd16c7424b97d4e610f5da6f0c5ccbdad8fdcc10ee95f1d130f165142da95394ea09a758907b6bf6157343a1796477ed75a340c17217b65
|
7
|
+
data.tar.gz: 1a0d01bfb3595f4286603e9c31d3c578aff55b4abc37952c41e448d02a7ea22c37a7ba5bc8cbb85809f4395992b0da8c73ec79109e6d15338b8802cf96465dbb
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Ruby JSON Schema Validator
|
2
2
|
|
3
|
-
[](https://github.com/voxpupuli/json-schema/blob/master/LICENSE)
|
3
|
+
[](https://github.com/voxpupuli/json-schema/blob/master/LICENSE.md)
|
4
4
|
[](https://github.com/voxpupuli/json-schema/actions/workflows/test.yml)
|
5
5
|
[](https://github.com/voxpupuli/json-schema/actions/workflows/release.yml)
|
6
6
|
[](https://rubygems.org/gems/json-schema)
|
@@ -80,7 +80,7 @@ that the `$schema` attribute takes precedence over the `:version` option during
|
|
80
80
|
parsing and validation.
|
81
81
|
|
82
82
|
For further information on json schema itself refer to <a
|
83
|
-
href="
|
83
|
+
href="https://json-schema.org/understanding-json-schema">Understanding
|
84
84
|
JSON Schema</a>.
|
85
85
|
|
86
86
|
Basic Usage
|
@@ -505,7 +505,7 @@ Existing pull requests and issues were transferred, please fork and continue to
|
|
505
505
|
|
506
506
|
# License
|
507
507
|
|
508
|
-
This gem is licensed
|
508
|
+
This gem is licensed under the [MIT license](LICENSE.md).
|
509
509
|
|
510
510
|
## Release information
|
511
511
|
|
@@ -12,7 +12,7 @@ module JSON
|
|
12
12
|
if schema
|
13
13
|
schema.validate(data, fragments, processor, options)
|
14
14
|
elsif uri
|
15
|
-
message = "The extended schema '#{uri
|
15
|
+
message = "The extended schema '#{uri}' cannot be found"
|
16
16
|
validation_error(processor, message, fragments, current_schema, self, options[:record_errors])
|
17
17
|
else
|
18
18
|
message = "The property '#{build_fragment(fragments)}' was not a valid schema"
|
@@ -10,7 +10,7 @@ module JSON
|
|
10
10
|
regexp = Regexp.new(property)
|
11
11
|
|
12
12
|
# Check each key in the data hash to see if it matches the regex
|
13
|
-
data.each do |key,
|
13
|
+
data.each do |key, _value|
|
14
14
|
next unless regexp.match(key)
|
15
15
|
|
16
16
|
schema = JSON::Schema.new(property_schema, current_schema.uri, validator)
|
@@ -36,12 +36,12 @@ module JSON
|
|
36
36
|
# When noAdditionalProperties is true, ensure no undefined properties exist in the data
|
37
37
|
return unless options[:noAdditionalProperties] == true && !schema.key?('additionalProperties')
|
38
38
|
|
39
|
-
diff = data.select do |k,
|
39
|
+
diff = data.select do |k, _v|
|
40
40
|
k = k.to_s
|
41
41
|
|
42
42
|
if schema.has_key?('patternProperties')
|
43
43
|
match = false
|
44
|
-
schema['patternProperties'].each do |property,
|
44
|
+
schema['patternProperties'].each do |property, _property_schema|
|
45
45
|
regexp = Regexp.new(property)
|
46
46
|
if regexp.match(k)
|
47
47
|
match = true
|
@@ -11,7 +11,7 @@ module JSON
|
|
11
11
|
if schema
|
12
12
|
schema.validate(data, fragments, processor, options)
|
13
13
|
elsif uri
|
14
|
-
message = "The referenced schema '#{uri
|
14
|
+
message = "The referenced schema '#{uri}' cannot be found"
|
15
15
|
validation_error(processor, message, fragments, current_schema, self, options[:record_errors])
|
16
16
|
else
|
17
17
|
message = "The property '#{build_fragment(fragments)}' was not a valid schema"
|
@@ -44,7 +44,7 @@ module JSON
|
|
44
44
|
end
|
45
45
|
fragment_path = fragment_path + "/#{fragment}"
|
46
46
|
if target_schema.nil?
|
47
|
-
raise SchemaError, "The fragment '#{fragment_path}' does not exist on schema #{ref_schema.uri
|
47
|
+
raise SchemaError, "The fragment '#{fragment_path}' does not exist on schema #{ref_schema.uri}"
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
@@ -9,7 +9,7 @@ module JSON
|
|
9
9
|
schema = current_schema.schema
|
10
10
|
defined_properties = schema['properties']
|
11
11
|
|
12
|
-
schema['required'].each do |property,
|
12
|
+
schema['required'].each do |property, _property_schema|
|
13
13
|
next if data.has_key?(property.to_s)
|
14
14
|
|
15
15
|
prop_defaults = options[:insert_defaults] &&
|
@@ -20,7 +20,7 @@ module JSON
|
|
20
20
|
messages = ["#{message}. The schema specific errors were:\n"]
|
21
21
|
@sub_errors.each do |subschema, errors|
|
22
22
|
messages.push "- #{subschema}:"
|
23
|
-
messages.concat
|
23
|
+
messages.concat(Array(errors).map { |e| "#{INDENT}- #{e.to_string(subschema_level + 1)}" })
|
24
24
|
end
|
25
25
|
messages.map { |m| (INDENT * subschema_level) + m }.join("\n")
|
26
26
|
end
|
@@ -20,7 +20,7 @@ module JSON
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def validate(current_schema, data, fragments, processor, options = {})
|
23
|
-
current_schema.schema.each do |attr_name,
|
23
|
+
current_schema.schema.each do |attr_name, _attribute|
|
24
24
|
if @attributes.has_key?(attr_name.to_s)
|
25
25
|
@attributes[attr_name.to_s].validate(current_schema, data, fragments, processor, self, options)
|
26
26
|
end
|
data/lib/json-schema/schema.rb
CHANGED
@@ -35,7 +35,7 @@ module JSON
|
|
35
35
|
def self.stringify(schema)
|
36
36
|
case schema
|
37
37
|
when Hash then
|
38
|
-
schema.map { |key,
|
38
|
+
schema.map { |key, _value| [key.to_s, stringify(schema[key])] }.to_h
|
39
39
|
when Array then
|
40
40
|
schema.map do |schema_item|
|
41
41
|
stringify(schema_item)
|
data/lib/json-schema/util/uri.rb
CHANGED
@@ -1,109 +1,132 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'addressable/uri'
|
2
4
|
|
3
5
|
module JSON
|
4
6
|
module Util
|
5
|
-
|
7
|
+
# @api private
|
8
|
+
class URI < Addressable::URI
|
6
9
|
SUPPORTED_PROTOCOLS = %w(http https ftp tftp sftp ssh svn+ssh telnet nntp gopher wais ldap prospero)
|
7
10
|
|
8
|
-
|
9
|
-
|
10
|
-
normalized_uri = @normalize_cache[uri]
|
11
|
-
|
12
|
-
if !normalized_uri
|
13
|
-
normalized_uri = parse(uri)
|
14
|
-
# Check for absolute path
|
15
|
-
if normalized_uri.relative?
|
16
|
-
data = normalized_uri
|
17
|
-
data = File.join(base_path, data) if data.path[0, 1] != '/'
|
18
|
-
normalized_uri = file_uri(data)
|
19
|
-
end
|
20
|
-
@normalize_cache[uri] = normalized_uri.freeze
|
21
|
-
end
|
22
|
-
|
23
|
-
normalized_uri
|
24
|
-
end
|
11
|
+
class << self
|
12
|
+
alias unescape_uri unescape
|
25
13
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
14
|
+
# @param uri [String, Addressable::URI]
|
15
|
+
# @return [Addressable::URI, nil]
|
16
|
+
def parse(uri)
|
17
|
+
super(uri)
|
18
|
+
rescue Addressable::URI::InvalidURIError => e
|
19
|
+
raise JSON::Schema::UriError, e.message
|
20
|
+
end
|
31
21
|
|
32
|
-
uri
|
33
|
-
|
34
|
-
|
22
|
+
# @param uri [String, Addressable::URI]
|
23
|
+
# @return [Addressable::URI, nil]
|
24
|
+
def file_uri(uri)
|
25
|
+
convert_path(parse(uri).path)
|
26
|
+
end
|
35
27
|
|
36
|
-
|
37
|
-
|
38
|
-
|
28
|
+
# @param uri [String, Addressable::URI
|
29
|
+
# @return [String]
|
30
|
+
def unescaped_path(uri)
|
31
|
+
parse(uri).unescaped_path
|
32
|
+
end
|
39
33
|
|
40
|
-
|
41
|
-
|
42
|
-
|
34
|
+
# Strips the fragment from the URI.
|
35
|
+
# @param uri [String, Addressable::URI]
|
36
|
+
# @return [Addressable::URI]
|
37
|
+
def strip_fragment(uri)
|
38
|
+
parse(uri).strip_fragment
|
39
|
+
end
|
43
40
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
ref_uri.path = Pathname.new(path).cleanpath.to_s
|
50
|
-
else
|
51
|
-
ref_uri.join!(path)
|
52
|
-
end
|
41
|
+
# @param uri [String, Addressable::URI]
|
42
|
+
# @return [Addressable::URI]
|
43
|
+
def normalized_uri(uri, base_path = Dir.pwd)
|
44
|
+
parse(uri).normalized_uri(base_path)
|
45
|
+
end
|
53
46
|
|
54
|
-
|
55
|
-
|
47
|
+
# Normalizes the reference URI based on the provided base URI
|
48
|
+
#
|
49
|
+
# @param ref [String, Addressable::URI]
|
50
|
+
# @param base [String, Addressable::URI]
|
51
|
+
# @return [Addressable::URI]
|
52
|
+
def normalize_ref(ref, base)
|
53
|
+
parse(ref).normalize_ref(base)
|
54
|
+
end
|
56
55
|
|
57
|
-
|
56
|
+
def absolutize_ref(ref, base)
|
57
|
+
parse(ref).absolutize_ref(base)
|
58
58
|
end
|
59
|
+
end
|
59
60
|
|
60
|
-
|
61
|
+
# Unencodes any percent encoded characters within a path component.
|
62
|
+
#
|
63
|
+
# @return [String]
|
64
|
+
def unescaped_path
|
65
|
+
self.class.unescape_component(path)
|
61
66
|
end
|
62
67
|
|
63
|
-
|
64
|
-
|
65
|
-
|
68
|
+
# Strips the fragment from the URI.
|
69
|
+
# @return [Addressable::URI] a new instance of URI without a fragment
|
70
|
+
def strip_fragment
|
71
|
+
if fragment.nil? || fragment.empty?
|
72
|
+
self
|
66
73
|
else
|
67
|
-
|
68
|
-
parsed_uri = @parse_cache[uri]
|
69
|
-
if parsed_uri
|
70
|
-
parsed_uri.dup
|
71
|
-
else
|
72
|
-
@parse_cache[uri] = Addressable::URI.parse(uri)
|
73
|
-
end
|
74
|
+
merge(fragment: '')
|
74
75
|
end
|
75
|
-
rescue Addressable::URI::InvalidURIError => e
|
76
|
-
raise JSON::Schema::UriError, e.message
|
77
76
|
end
|
78
77
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
78
|
+
# Normalizes the URI based on the provided base path.
|
79
|
+
#
|
80
|
+
# @param base_path [String] the base path to use for relative URIs. Defaults to the current working directory.
|
81
|
+
# @return [Addressable::URI] the normalized URI or nil
|
82
|
+
def normalized_uri(base_path = Dir.pwd)
|
83
|
+
if relative?
|
84
|
+
if path[0, 1] == '/'
|
85
|
+
self.class.file_uri(self)
|
86
|
+
else
|
87
|
+
self.class.file_uri(File.join(base_path, self))
|
88
|
+
end
|
83
89
|
else
|
84
|
-
|
90
|
+
self
|
85
91
|
end
|
86
92
|
end
|
87
93
|
|
88
|
-
|
89
|
-
|
94
|
+
# @param base [Addressable::URI, String]
|
95
|
+
# @return [Addressable::URI]
|
96
|
+
def normalize_ref(base)
|
97
|
+
base_uri = self.class.parse(base)
|
98
|
+
defer_validation do
|
99
|
+
if relative?
|
100
|
+
# Check for absolute path
|
101
|
+
path, fragment = to_s.split('#')
|
102
|
+
merge!(base_uri)
|
90
103
|
|
91
|
-
|
92
|
-
|
104
|
+
if path.nil? || path == ''
|
105
|
+
self.path = base_uri.path
|
106
|
+
elsif path[0, 1] == '/'
|
107
|
+
self.path = Pathname.new(path).cleanpath.to_s
|
108
|
+
else
|
109
|
+
join!(path)
|
110
|
+
end
|
93
111
|
|
94
|
-
|
95
|
-
|
96
|
-
end
|
112
|
+
self.fragment = fragment
|
113
|
+
end
|
97
114
|
|
98
|
-
|
99
|
-
|
115
|
+
self.fragment = '' if self.fragment.nil? || self.fragment.empty?
|
116
|
+
end
|
100
117
|
|
101
|
-
|
118
|
+
self
|
102
119
|
end
|
103
120
|
|
104
|
-
|
105
|
-
|
106
|
-
|
121
|
+
# @param base [Addressable::URI, String]
|
122
|
+
# @return [Addressable::URI]
|
123
|
+
def absolutize_ref(base)
|
124
|
+
ref = strip_fragment
|
125
|
+
if ref.absolute?
|
126
|
+
ref
|
127
|
+
else
|
128
|
+
self.class.strip_fragment(base).join(ref.path).normalized_uri
|
129
|
+
end
|
107
130
|
end
|
108
131
|
end
|
109
132
|
end
|
@@ -36,8 +36,7 @@ module JSON
|
|
36
36
|
private_class_method :new
|
37
37
|
|
38
38
|
class << self
|
39
|
-
|
40
|
-
def mask19 v, str
|
39
|
+
def mask v, str
|
41
40
|
nstr = str.bytes.to_a
|
42
41
|
version = [0, 16, 32, 48, 64, 80][v]
|
43
42
|
nstr[6] &= 0b00001111
|
@@ -46,31 +45,12 @@ module JSON
|
|
46
45
|
# nstr[7] |= 0b01010000
|
47
46
|
nstr[8] &= 0b00111111
|
48
47
|
nstr[8] |= 0b10000000
|
49
|
-
str = ''
|
48
|
+
str = +''
|
50
49
|
nstr.each { |s| str << s.chr }
|
51
50
|
str
|
52
51
|
end
|
53
52
|
|
54
|
-
|
55
|
-
def mask18 v, str
|
56
|
-
version = [0, 16, 32, 48, 64, 80][v]
|
57
|
-
str[6] &= 0b00001111
|
58
|
-
str[6] |= version
|
59
|
-
# str[7] &= 0b00001111
|
60
|
-
# str[7] |= 0b01010000
|
61
|
-
str[8] &= 0b00111111
|
62
|
-
str[8] |= 0b10000000
|
63
|
-
str
|
64
|
-
end
|
65
|
-
|
66
|
-
def mask v, str
|
67
|
-
if RUBY_VERSION >= '1.9.0'
|
68
|
-
mask19 v, str
|
69
|
-
else
|
70
|
-
mask18 v, str
|
71
|
-
end
|
72
|
-
end
|
73
|
-
private :mask, :mask18, :mask19
|
53
|
+
private :mask
|
74
54
|
|
75
55
|
# UUID generation using SHA1. Recommended over create_md5.
|
76
56
|
# Namespace object is another UUID, some of them are pre-defined below.
|
@@ -153,14 +133,10 @@ module JSON
|
|
153
133
|
str = sha1.digest
|
154
134
|
r = rand 14 # 20-6
|
155
135
|
node = str[r, 6] || str
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
nnode.each { |s| node << s.chr }
|
161
|
-
else
|
162
|
-
node[0] |= 0x01 # multicast bit
|
163
|
-
end
|
136
|
+
nnode = node.bytes.to_a
|
137
|
+
nnode[0] |= 0x01
|
138
|
+
node = ''
|
139
|
+
nnode.each { |s| node << s.chr }
|
164
140
|
k = rand 0x40000
|
165
141
|
open STATE_FILE, 'w' do |fp|
|
166
142
|
fp.flock IO::LOCK_EX
|
@@ -177,7 +153,7 @@ module JSON
|
|
177
153
|
if t.nil? then
|
178
154
|
# UUID epoch is 1582/Oct/15
|
179
155
|
tt = Time.now
|
180
|
-
t = tt.to_i * 10000000 + tt.tv_usec * 10 + 0x01B21DD213814000
|
156
|
+
t = (tt.to_i * 10000000) + (tt.tv_usec * 10) + 0x01B21DD213814000
|
181
157
|
end
|
182
158
|
c = c.succ # important; increment here
|
183
159
|
write_state fp, c, m
|
@@ -244,7 +220,7 @@ module JSON
|
|
244
220
|
def to_int
|
245
221
|
tmp = raw_bytes.unpack 'C*'
|
246
222
|
tmp.inject do |r, i|
|
247
|
-
r * 256 | i
|
223
|
+
(r * 256) | i
|
248
224
|
end
|
249
225
|
end
|
250
226
|
alias to_i to_int
|
@@ -260,7 +236,7 @@ module JSON
|
|
260
236
|
end
|
261
237
|
|
262
238
|
# Two UUIDs are said to be equal if and only if their (byte-order
|
263
|
-
# canonicalized) integer representations are
|
239
|
+
# canonicalized) integer representations are equivalent. Refer RFC4122 for
|
264
240
|
# details.
|
265
241
|
def == other
|
266
242
|
to_i == other.to_i
|
@@ -5,6 +5,7 @@ require 'digest/sha1'
|
|
5
5
|
require 'date'
|
6
6
|
require 'thread'
|
7
7
|
require 'timeout'
|
8
|
+
require 'stringio'
|
8
9
|
require 'yaml'
|
9
10
|
|
10
11
|
require 'json-schema/schema/reader'
|
@@ -179,7 +180,7 @@ module JSON
|
|
179
180
|
%w[definitions properties patternProperties].each do |key|
|
180
181
|
next unless value = schema[key]
|
181
182
|
|
182
|
-
value.each do |
|
183
|
+
value.each do |_k, inner_schema|
|
183
184
|
handle_schema(parent_schema, inner_schema)
|
184
185
|
end
|
185
186
|
end
|
@@ -299,7 +300,6 @@ module JSON
|
|
299
300
|
|
300
301
|
def clear_cache
|
301
302
|
@@schemas = {}
|
302
|
-
JSON::Util::URI.clear_cache
|
303
303
|
end
|
304
304
|
|
305
305
|
def schemas
|
@@ -377,7 +377,7 @@ module JSON
|
|
377
377
|
@@default_validator = v
|
378
378
|
end
|
379
379
|
|
380
|
-
def register_format_validator(format, validation_proc, versions = (@@validators.flat_map { |
|
380
|
+
def register_format_validator(format, validation_proc, versions = (@@validators.flat_map { |_k, v| v.names.first } + [nil]))
|
381
381
|
custom_format_validator = JSON::Schema::CustomFormat.new(validation_proc)
|
382
382
|
versions.each do |version|
|
383
383
|
validator = validator_for_name(version)
|
@@ -385,14 +385,14 @@ module JSON
|
|
385
385
|
end
|
386
386
|
end
|
387
387
|
|
388
|
-
def deregister_format_validator(format, versions = (@@validators.flat_map { |
|
388
|
+
def deregister_format_validator(format, versions = (@@validators.flat_map { |_k, v| v.names.first } + [nil]))
|
389
389
|
versions.each do |version|
|
390
390
|
validator = validator_for_name(version)
|
391
391
|
validator.formats[format.to_s] = validator.default_formats[format.to_s]
|
392
392
|
end
|
393
393
|
end
|
394
394
|
|
395
|
-
def restore_default_formats(versions = (@@validators.flat_map { |
|
395
|
+
def restore_default_formats(versions = (@@validators.flat_map { |_k, v| v.names.first } + [nil]))
|
396
396
|
versions.each do |version|
|
397
397
|
validator = validator_for_name(version)
|
398
398
|
validator.formats = validator.default_formats.clone
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json-schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenny Hoxworth
|
@@ -9,78 +9,92 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2024-12-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: minitest
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
20
|
+
version: '5.0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
27
|
+
version: '5.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
29
|
+
name: rake
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
32
|
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '13.0'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '13.0'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: voxpupuli-rubocop
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
48
|
+
version: 3.0.0
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
55
|
+
version: 3.0.0
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: webmock
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- - "
|
60
|
+
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '3.23'
|
63
63
|
type: :development
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
|
-
- - "
|
67
|
+
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: '
|
69
|
+
version: '3.23'
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
71
|
name: addressable
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- - "
|
74
|
+
- - "~>"
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: '2.8'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
|
-
- - "
|
81
|
+
- - "~>"
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '2.8'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: bigdecimal
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '3.1'
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '3.1'
|
84
98
|
description:
|
85
99
|
email: voxpupuli@groups.io
|
86
100
|
executables: []
|
@@ -172,10 +186,14 @@ files:
|
|
172
186
|
- resources/draft-03.json
|
173
187
|
- resources/draft-04.json
|
174
188
|
- resources/draft-06.json
|
175
|
-
homepage:
|
189
|
+
homepage: https://github.com/voxpupuli/json-schema/
|
176
190
|
licenses:
|
177
191
|
- MIT
|
178
|
-
metadata:
|
192
|
+
metadata:
|
193
|
+
source_code_uri: https://github.com/voxpupuli/json-schema/
|
194
|
+
changelog_uri: https://github.com/voxpupuli/json-schema//blob/master/CHANGELOG.md
|
195
|
+
bug_tracker_uri: https://github.com/voxpupuli/json-schema//issues
|
196
|
+
funding_uri: https://github.com/sponsors/voxpupuli
|
179
197
|
post_install_message:
|
180
198
|
rdoc_options: []
|
181
199
|
require_paths:
|
@@ -184,14 +202,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
184
202
|
requirements:
|
185
203
|
- - ">="
|
186
204
|
- !ruby/object:Gem::Version
|
187
|
-
version: '2.
|
205
|
+
version: '2.7'
|
188
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
207
|
requirements:
|
190
208
|
- - ">="
|
191
209
|
- !ruby/object:Gem::Version
|
192
|
-
version: '
|
210
|
+
version: '0'
|
193
211
|
requirements: []
|
194
|
-
rubygems_version: 3.
|
212
|
+
rubygems_version: 3.5.22
|
195
213
|
signing_key:
|
196
214
|
specification_version: 4
|
197
215
|
summary: Ruby JSON Schema Validator
|