json_schemer 1.0.3 → 2.4.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/.github/workflows/ci.yml +7 -8
- data/CHANGELOG.md +96 -0
- data/Gemfile.lock +23 -14
- data/README.md +343 -20
- data/json_schemer.gemspec +8 -3
- data/lib/json_schemer/configuration.rb +31 -0
- data/lib/json_schemer/content.rb +18 -0
- data/lib/json_schemer/draft201909/meta.rb +320 -0
- data/lib/json_schemer/draft201909/vocab/applicator.rb +104 -0
- data/lib/json_schemer/draft201909/vocab/core.rb +45 -0
- data/lib/json_schemer/draft201909/vocab.rb +31 -0
- data/lib/json_schemer/draft202012/meta.rb +364 -0
- data/lib/json_schemer/draft202012/vocab/applicator.rb +382 -0
- data/lib/json_schemer/draft202012/vocab/content.rb +52 -0
- data/lib/json_schemer/draft202012/vocab/core.rb +160 -0
- data/lib/json_schemer/draft202012/vocab/format_annotation.rb +23 -0
- data/lib/json_schemer/draft202012/vocab/format_assertion.rb +23 -0
- data/lib/json_schemer/draft202012/vocab/meta_data.rb +30 -0
- data/lib/json_schemer/draft202012/vocab/unevaluated.rb +104 -0
- data/lib/json_schemer/draft202012/vocab/validation.rb +290 -0
- data/lib/json_schemer/draft202012/vocab.rb +105 -0
- data/lib/json_schemer/draft4/meta.rb +161 -0
- data/lib/json_schemer/draft4/vocab/validation.rb +38 -0
- data/lib/json_schemer/draft4/vocab.rb +18 -0
- data/lib/json_schemer/draft6/meta.rb +172 -0
- data/lib/json_schemer/draft6/vocab.rb +16 -0
- data/lib/json_schemer/draft7/meta.rb +183 -0
- data/lib/json_schemer/draft7/vocab/validation.rb +69 -0
- data/lib/json_schemer/draft7/vocab.rb +30 -0
- data/lib/json_schemer/errors.rb +1 -0
- data/lib/json_schemer/format/duration.rb +23 -0
- data/lib/json_schemer/format/json_pointer.rb +18 -0
- data/lib/json_schemer/format.rb +127 -106
- data/lib/json_schemer/keyword.rb +56 -0
- data/lib/json_schemer/location.rb +25 -0
- data/lib/json_schemer/openapi.rb +38 -0
- data/lib/json_schemer/openapi30/document.rb +1672 -0
- data/lib/json_schemer/openapi30/meta.rb +34 -0
- data/lib/json_schemer/openapi30/vocab/base.rb +18 -0
- data/lib/json_schemer/openapi30/vocab.rb +12 -0
- data/lib/json_schemer/openapi31/document.rb +1557 -0
- data/lib/json_schemer/openapi31/meta.rb +136 -0
- data/lib/json_schemer/openapi31/vocab/base.rb +127 -0
- data/lib/json_schemer/openapi31/vocab.rb +18 -0
- data/lib/json_schemer/output.rb +56 -0
- data/lib/json_schemer/resources.rb +24 -0
- data/lib/json_schemer/result.rb +242 -0
- data/lib/json_schemer/schema.rb +433 -0
- data/lib/json_schemer/version.rb +1 -1
- data/lib/json_schemer.rb +235 -32
- metadata +119 -18
- data/lib/json_schemer/schema/base.rb +0 -677
- data/lib/json_schemer/schema/draft4.json +0 -149
- data/lib/json_schemer/schema/draft4.rb +0 -44
- data/lib/json_schemer/schema/draft6.json +0 -155
- data/lib/json_schemer/schema/draft6.rb +0 -25
- data/lib/json_schemer/schema/draft7.json +0 -172
- data/lib/json_schemer/schema/draft7.rb +0 -32
data/lib/json_schemer.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
-
require 'base64'
|
3
2
|
require 'bigdecimal'
|
3
|
+
require 'forwardable'
|
4
4
|
require 'ipaddr'
|
5
5
|
require 'json'
|
6
6
|
require 'net/http'
|
@@ -14,79 +14,282 @@ require 'regexp_parser'
|
|
14
14
|
require 'simpleidn'
|
15
15
|
|
16
16
|
require 'json_schemer/version'
|
17
|
+
require 'json_schemer/format/duration'
|
17
18
|
require 'json_schemer/format/hostname'
|
19
|
+
require 'json_schemer/format/json_pointer'
|
18
20
|
require 'json_schemer/format/uri_template'
|
19
21
|
require 'json_schemer/format/email'
|
20
22
|
require 'json_schemer/format'
|
23
|
+
require 'json_schemer/content'
|
21
24
|
require 'json_schemer/errors'
|
22
25
|
require 'json_schemer/cached_resolver'
|
23
26
|
require 'json_schemer/ecma_regexp'
|
24
|
-
require 'json_schemer/
|
25
|
-
require 'json_schemer/
|
26
|
-
require 'json_schemer/
|
27
|
-
require 'json_schemer/
|
27
|
+
require 'json_schemer/location'
|
28
|
+
require 'json_schemer/result'
|
29
|
+
require 'json_schemer/output'
|
30
|
+
require 'json_schemer/keyword'
|
31
|
+
require 'json_schemer/draft202012/meta'
|
32
|
+
require 'json_schemer/draft202012/vocab/core'
|
33
|
+
require 'json_schemer/draft202012/vocab/applicator'
|
34
|
+
require 'json_schemer/draft202012/vocab/unevaluated'
|
35
|
+
require 'json_schemer/draft202012/vocab/validation'
|
36
|
+
require 'json_schemer/draft202012/vocab/format_annotation'
|
37
|
+
require 'json_schemer/draft202012/vocab/format_assertion'
|
38
|
+
require 'json_schemer/draft202012/vocab/content'
|
39
|
+
require 'json_schemer/draft202012/vocab/meta_data'
|
40
|
+
require 'json_schemer/draft202012/vocab'
|
41
|
+
require 'json_schemer/draft201909/meta'
|
42
|
+
require 'json_schemer/draft201909/vocab/core'
|
43
|
+
require 'json_schemer/draft201909/vocab/applicator'
|
44
|
+
require 'json_schemer/draft201909/vocab'
|
45
|
+
require 'json_schemer/draft7/meta'
|
46
|
+
require 'json_schemer/draft7/vocab/validation'
|
47
|
+
require 'json_schemer/draft7/vocab'
|
48
|
+
require 'json_schemer/draft6/meta'
|
49
|
+
require 'json_schemer/draft6/vocab'
|
50
|
+
require 'json_schemer/draft4/meta'
|
51
|
+
require 'json_schemer/draft4/vocab/validation'
|
52
|
+
require 'json_schemer/draft4/vocab'
|
53
|
+
require 'json_schemer/openapi31/meta'
|
54
|
+
require 'json_schemer/openapi31/vocab/base'
|
55
|
+
require 'json_schemer/openapi31/vocab'
|
56
|
+
require 'json_schemer/openapi31/document'
|
57
|
+
require 'json_schemer/openapi30/document'
|
58
|
+
require 'json_schemer/openapi30/meta'
|
59
|
+
require 'json_schemer/openapi30/vocab/base'
|
60
|
+
require 'json_schemer/openapi30/vocab'
|
61
|
+
require 'json_schemer/openapi'
|
62
|
+
require 'json_schemer/configuration'
|
63
|
+
require 'json_schemer/resources'
|
64
|
+
require 'json_schemer/schema'
|
28
65
|
|
29
66
|
module JSONSchemer
|
30
|
-
class
|
67
|
+
class UnsupportedOpenAPIVersion < StandardError; end
|
31
68
|
class UnknownRef < StandardError; end
|
32
69
|
class UnknownFormat < StandardError; end
|
70
|
+
class UnknownVocabulary < StandardError; end
|
71
|
+
class UnknownContentEncoding < StandardError; end
|
72
|
+
class UnknownContentMediaType < StandardError; end
|
73
|
+
class UnknownOutputFormat < StandardError; end
|
33
74
|
class InvalidRefResolution < StandardError; end
|
75
|
+
class InvalidRefPointer < StandardError; end
|
34
76
|
class InvalidRegexpResolution < StandardError; end
|
35
77
|
class InvalidFileURI < StandardError; end
|
36
|
-
class InvalidSymbolKey < StandardError; end
|
37
78
|
class InvalidEcmaRegexp < StandardError; end
|
38
79
|
|
39
|
-
|
40
|
-
|
41
|
-
'
|
42
|
-
'
|
43
|
-
'
|
44
|
-
'
|
45
|
-
|
80
|
+
VOCABULARIES = {
|
81
|
+
'https://json-schema.org/draft/2020-12/vocab/core' => Draft202012::Vocab::CORE,
|
82
|
+
'https://json-schema.org/draft/2020-12/vocab/applicator' => Draft202012::Vocab::APPLICATOR,
|
83
|
+
'https://json-schema.org/draft/2020-12/vocab/unevaluated' => Draft202012::Vocab::UNEVALUATED,
|
84
|
+
'https://json-schema.org/draft/2020-12/vocab/validation' => Draft202012::Vocab::VALIDATION,
|
85
|
+
'https://json-schema.org/draft/2020-12/vocab/format-annotation' => Draft202012::Vocab::FORMAT_ANNOTATION,
|
86
|
+
'https://json-schema.org/draft/2020-12/vocab/format-assertion' => Draft202012::Vocab::FORMAT_ASSERTION,
|
87
|
+
'https://json-schema.org/draft/2020-12/vocab/content' => Draft202012::Vocab::CONTENT,
|
88
|
+
'https://json-schema.org/draft/2020-12/vocab/meta-data' => Draft202012::Vocab::META_DATA,
|
89
|
+
|
90
|
+
'https://json-schema.org/draft/2019-09/vocab/core' => Draft201909::Vocab::CORE,
|
91
|
+
'https://json-schema.org/draft/2019-09/vocab/applicator' => Draft201909::Vocab::APPLICATOR,
|
92
|
+
'https://json-schema.org/draft/2019-09/vocab/validation' => Draft201909::Vocab::VALIDATION,
|
93
|
+
'https://json-schema.org/draft/2019-09/vocab/format' => Draft201909::Vocab::FORMAT,
|
94
|
+
'https://json-schema.org/draft/2019-09/vocab/content' => Draft201909::Vocab::CONTENT,
|
95
|
+
'https://json-schema.org/draft/2019-09/vocab/meta-data' => Draft201909::Vocab::META_DATA,
|
96
|
+
|
97
|
+
'json-schemer://draft7' => Draft7::Vocab::ALL,
|
98
|
+
'json-schemer://draft6' => Draft6::Vocab::ALL,
|
99
|
+
'json-schemer://draft4' => Draft4::Vocab::ALL,
|
100
|
+
|
101
|
+
'https://spec.openapis.org/oas/3.1/vocab/base' => OpenAPI31::Vocab::BASE,
|
102
|
+
'json-schemer://openapi30' => OpenAPI30::Vocab::BASE
|
103
|
+
}
|
104
|
+
VOCABULARY_ORDER = VOCABULARIES.transform_values.with_index { |_vocabulary, index| index }
|
46
105
|
|
47
106
|
WINDOWS_URI_PATH_REGEX = /\A\/[a-z]:/i
|
48
107
|
|
108
|
+
# :nocov:
|
109
|
+
URI_PARSER = URI.const_defined?(:RFC2396_PARSER) ? URI::RFC2396_PARSER : URI::DEFAULT_PARSER
|
110
|
+
# :nocov:
|
111
|
+
|
49
112
|
FILE_URI_REF_RESOLVER = proc do |uri|
|
50
113
|
raise InvalidFileURI, 'must use `file` scheme' unless uri.scheme == 'file'
|
51
114
|
raise InvalidFileURI, 'cannot have a host (use `file:///`)' if uri.host && !uri.host.empty?
|
52
115
|
path = uri.path
|
53
116
|
path = path[1..-1] if path.match?(WINDOWS_URI_PATH_REGEX)
|
54
|
-
JSON.parse(File.read(
|
117
|
+
JSON.parse(File.read(URI_PARSER.unescape(path)))
|
55
118
|
end
|
56
119
|
|
57
120
|
class << self
|
58
|
-
def schema(schema,
|
121
|
+
def schema(schema, **options)
|
122
|
+
schema = resolve(schema, options)
|
123
|
+
Schema.new(schema, **options)
|
124
|
+
end
|
125
|
+
|
126
|
+
def valid_schema?(schema, **options)
|
127
|
+
schema = resolve(schema, options)
|
128
|
+
meta_schema(schema, options).valid?(schema, **options.slice(:output_format, :resolve_enumerators, :access_mode))
|
129
|
+
end
|
130
|
+
|
131
|
+
def validate_schema(schema, **options)
|
132
|
+
schema = resolve(schema, options)
|
133
|
+
meta_schema(schema, options).validate(schema, **options.slice(:output_format, :resolve_enumerators, :access_mode))
|
134
|
+
end
|
135
|
+
|
136
|
+
def draft202012
|
137
|
+
@draft202012 ||= Schema.new(
|
138
|
+
Draft202012::SCHEMA,
|
139
|
+
:base_uri => Draft202012::BASE_URI,
|
140
|
+
:formats => Draft202012::FORMATS,
|
141
|
+
:content_encodings => Draft202012::CONTENT_ENCODINGS,
|
142
|
+
:content_media_types => Draft202012::CONTENT_MEDIA_TYPES,
|
143
|
+
:ref_resolver => Draft202012::Meta::SCHEMAS.to_proc,
|
144
|
+
:regexp_resolver => 'ecma'
|
145
|
+
)
|
146
|
+
end
|
147
|
+
|
148
|
+
def draft201909
|
149
|
+
@draft201909 ||= Schema.new(
|
150
|
+
Draft201909::SCHEMA,
|
151
|
+
:base_uri => Draft201909::BASE_URI,
|
152
|
+
:formats => Draft201909::FORMATS,
|
153
|
+
:content_encodings => Draft201909::CONTENT_ENCODINGS,
|
154
|
+
:content_media_types => Draft201909::CONTENT_MEDIA_TYPES,
|
155
|
+
:ref_resolver => Draft201909::Meta::SCHEMAS.to_proc,
|
156
|
+
:regexp_resolver => 'ecma'
|
157
|
+
)
|
158
|
+
end
|
159
|
+
|
160
|
+
def draft7
|
161
|
+
@draft7 ||= Schema.new(
|
162
|
+
Draft7::SCHEMA,
|
163
|
+
:vocabulary => { 'json-schemer://draft7' => true },
|
164
|
+
:base_uri => Draft7::BASE_URI,
|
165
|
+
:formats => Draft7::FORMATS,
|
166
|
+
:content_encodings => Draft7::CONTENT_ENCODINGS,
|
167
|
+
:content_media_types => Draft7::CONTENT_MEDIA_TYPES,
|
168
|
+
:regexp_resolver => 'ecma'
|
169
|
+
)
|
170
|
+
end
|
171
|
+
|
172
|
+
def draft6
|
173
|
+
@draft6 ||= Schema.new(
|
174
|
+
Draft6::SCHEMA,
|
175
|
+
:vocabulary => { 'json-schemer://draft6' => true },
|
176
|
+
:base_uri => Draft6::BASE_URI,
|
177
|
+
:formats => Draft6::FORMATS,
|
178
|
+
:content_encodings => Draft6::CONTENT_ENCODINGS,
|
179
|
+
:content_media_types => Draft6::CONTENT_MEDIA_TYPES,
|
180
|
+
:regexp_resolver => 'ecma'
|
181
|
+
)
|
182
|
+
end
|
183
|
+
|
184
|
+
def draft4
|
185
|
+
@draft4 ||= Schema.new(
|
186
|
+
Draft4::SCHEMA,
|
187
|
+
:vocabulary => { 'json-schemer://draft4' => true },
|
188
|
+
:base_uri => Draft4::BASE_URI,
|
189
|
+
:formats => Draft4::FORMATS,
|
190
|
+
:content_encodings => Draft4::CONTENT_ENCODINGS,
|
191
|
+
:content_media_types => Draft4::CONTENT_MEDIA_TYPES,
|
192
|
+
:regexp_resolver => 'ecma'
|
193
|
+
)
|
194
|
+
end
|
195
|
+
|
196
|
+
def openapi31
|
197
|
+
@openapi31 ||= Schema.new(
|
198
|
+
OpenAPI31::SCHEMA,
|
199
|
+
:base_uri => OpenAPI31::BASE_URI,
|
200
|
+
:formats => OpenAPI31::FORMATS,
|
201
|
+
:ref_resolver => OpenAPI31::Meta::SCHEMAS.to_proc,
|
202
|
+
:regexp_resolver => 'ecma'
|
203
|
+
)
|
204
|
+
end
|
205
|
+
|
206
|
+
def openapi30
|
207
|
+
@openapi30 ||= Schema.new(
|
208
|
+
OpenAPI30::SCHEMA,
|
209
|
+
:vocabulary => {
|
210
|
+
'json-schemer://draft4' => true,
|
211
|
+
'json-schemer://openapi30' => true
|
212
|
+
},
|
213
|
+
:base_uri => OpenAPI30::BASE_URI,
|
214
|
+
:formats => OpenAPI30::FORMATS,
|
215
|
+
:ref_resolver => OpenAPI30::Meta::SCHEMAS.to_proc,
|
216
|
+
:regexp_resolver => 'ecma'
|
217
|
+
)
|
218
|
+
end
|
219
|
+
|
220
|
+
def openapi31_document
|
221
|
+
@openapi31_document ||= Schema.new(
|
222
|
+
OpenAPI31::Document::SCHEMA_BASE,
|
223
|
+
:ref_resolver => OpenAPI31::Document::SCHEMAS.to_proc,
|
224
|
+
:regexp_resolver => 'ecma'
|
225
|
+
)
|
226
|
+
end
|
227
|
+
|
228
|
+
def openapi30_document
|
229
|
+
@openapi30_document ||= Schema.new(
|
230
|
+
OpenAPI30::Document::SCHEMA,
|
231
|
+
:ref_resolver => OpenAPI30::Document::SCHEMAS.to_proc,
|
232
|
+
:regexp_resolver => 'ecma'
|
233
|
+
)
|
234
|
+
end
|
235
|
+
|
236
|
+
def openapi(document, **options)
|
237
|
+
OpenAPI.new(document, **options)
|
238
|
+
end
|
239
|
+
|
240
|
+
def configuration
|
241
|
+
@configuration ||= Configuration.new
|
242
|
+
end
|
243
|
+
|
244
|
+
def configure
|
245
|
+
yield configuration
|
246
|
+
end
|
247
|
+
|
248
|
+
private
|
249
|
+
|
250
|
+
def resolve(schema, options)
|
59
251
|
case schema
|
60
252
|
when String
|
61
|
-
|
253
|
+
JSON.parse(schema)
|
62
254
|
when Pathname
|
63
|
-
base_uri = URI.parse(File.join('file:',
|
255
|
+
base_uri = URI.parse(File.join('file:', URI_PARSER.escape(schema.realpath.to_s)))
|
64
256
|
options[:base_uri] = base_uri
|
65
|
-
|
257
|
+
if options.key?(:ref_resolver)
|
66
258
|
FILE_URI_REF_RESOLVER.call(base_uri)
|
67
259
|
else
|
68
260
|
ref_resolver = CachedResolver.new(&FILE_URI_REF_RESOLVER)
|
69
261
|
options[:ref_resolver] = ref_resolver
|
70
262
|
ref_resolver.call(base_uri)
|
71
263
|
end
|
72
|
-
end
|
73
|
-
|
74
|
-
schema_class = if schema.is_a?(Hash) && schema.key?('$schema')
|
75
|
-
meta_schema = schema.fetch('$schema')
|
76
|
-
SCHEMA_CLASS_BY_META_SCHEMA[meta_schema] || raise(UnsupportedMetaSchema, meta_schema)
|
77
264
|
else
|
78
|
-
|
265
|
+
schema
|
79
266
|
end
|
80
|
-
|
81
|
-
schema_class.new(schema, **options)
|
82
267
|
end
|
83
268
|
|
84
|
-
def
|
85
|
-
|
269
|
+
def meta_schema(schema, options)
|
270
|
+
parseable_schema = {}
|
271
|
+
if schema.is_a?(Hash)
|
272
|
+
meta_schema = schema['$schema'] || schema[:'$schema']
|
273
|
+
parseable_schema['$schema'] = meta_schema if meta_schema.is_a?(String)
|
274
|
+
end
|
275
|
+
schema(parseable_schema, **options).meta_schema
|
86
276
|
end
|
277
|
+
end
|
87
278
|
|
88
|
-
|
89
|
-
|
90
|
-
|
279
|
+
META_SCHEMA_CALLABLES_BY_BASE_URI_STR = {
|
280
|
+
Draft202012::BASE_URI.to_s => method(:draft202012),
|
281
|
+
Draft201909::BASE_URI.to_s => method(:draft201909),
|
282
|
+
Draft7::BASE_URI.to_s => method(:draft7),
|
283
|
+
Draft6::BASE_URI.to_s => method(:draft6),
|
284
|
+
Draft4::BASE_URI.to_s => method(:draft4),
|
285
|
+
# version-less $schema deprecated after Draft 4
|
286
|
+
'http://json-schema.org/schema#' => method(:draft4),
|
287
|
+
OpenAPI31::BASE_URI.to_s => method(:openapi31),
|
288
|
+
OpenAPI30::BASE_URI.to_s => method(:openapi30)
|
289
|
+
}.freeze
|
290
|
+
|
291
|
+
META_SCHEMAS_BY_BASE_URI_STR = Hash.new do |hash, base_uri_str|
|
292
|
+
next unless META_SCHEMA_CALLABLES_BY_BASE_URI_STR.key?(base_uri_str)
|
293
|
+
hash[base_uri_str] = META_SCHEMA_CALLABLES_BY_BASE_URI_STR.fetch(base_uri_str).call
|
91
294
|
end
|
92
295
|
end
|
metadata
CHANGED
@@ -1,29 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_schemer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Harsha
|
8
|
-
autorequire:
|
9
8
|
bindir: exe
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-02-02 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
12
|
+
- !ruby/object:Gem::Dependency
|
13
|
+
name: base64
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - ">="
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0'
|
19
|
+
type: :development
|
20
|
+
prerelease: false
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
requirements:
|
23
|
+
- - ">="
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: '0'
|
13
26
|
- !ruby/object:Gem::Dependency
|
14
27
|
name: bundler
|
15
28
|
requirement: !ruby/object:Gem::Requirement
|
16
29
|
requirements:
|
17
30
|
- - "~>"
|
18
31
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
32
|
+
version: 2.4.0
|
20
33
|
type: :development
|
21
34
|
prerelease: false
|
22
35
|
version_requirements: !ruby/object:Gem::Requirement
|
23
36
|
requirements:
|
24
37
|
- - "~>"
|
25
38
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
39
|
+
version: 2.4.0
|
27
40
|
- !ruby/object:Gem::Dependency
|
28
41
|
name: rake
|
29
42
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +79,62 @@ dependencies:
|
|
66
79
|
- - "~>"
|
67
80
|
- !ruby/object:Gem::Version
|
68
81
|
version: '0.22'
|
82
|
+
- !ruby/object:Gem::Dependency
|
83
|
+
name: csv
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
type: :development
|
90
|
+
prerelease: false
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
name: i18n
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: i18n-debug
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
type: :development
|
118
|
+
prerelease: false
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
- !ruby/object:Gem::Dependency
|
125
|
+
name: bigdecimal
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
type: :runtime
|
132
|
+
prerelease: false
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
134
|
+
requirements:
|
135
|
+
- - ">="
|
136
|
+
- !ruby/object:Gem::Version
|
137
|
+
version: '0'
|
69
138
|
- !ruby/object:Gem::Dependency
|
70
139
|
name: hana
|
71
140
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,7 +177,6 @@ dependencies:
|
|
108
177
|
- - "~>"
|
109
178
|
- !ruby/object:Gem::Version
|
110
179
|
version: '0.2'
|
111
|
-
description:
|
112
180
|
email:
|
113
181
|
- davishmcclurg@gmail.com
|
114
182
|
executables:
|
@@ -132,25 +200,58 @@ files:
|
|
132
200
|
- json_schemer.gemspec
|
133
201
|
- lib/json_schemer.rb
|
134
202
|
- lib/json_schemer/cached_resolver.rb
|
203
|
+
- lib/json_schemer/configuration.rb
|
204
|
+
- lib/json_schemer/content.rb
|
205
|
+
- lib/json_schemer/draft201909/meta.rb
|
206
|
+
- lib/json_schemer/draft201909/vocab.rb
|
207
|
+
- lib/json_schemer/draft201909/vocab/applicator.rb
|
208
|
+
- lib/json_schemer/draft201909/vocab/core.rb
|
209
|
+
- lib/json_schemer/draft202012/meta.rb
|
210
|
+
- lib/json_schemer/draft202012/vocab.rb
|
211
|
+
- lib/json_schemer/draft202012/vocab/applicator.rb
|
212
|
+
- lib/json_schemer/draft202012/vocab/content.rb
|
213
|
+
- lib/json_schemer/draft202012/vocab/core.rb
|
214
|
+
- lib/json_schemer/draft202012/vocab/format_annotation.rb
|
215
|
+
- lib/json_schemer/draft202012/vocab/format_assertion.rb
|
216
|
+
- lib/json_schemer/draft202012/vocab/meta_data.rb
|
217
|
+
- lib/json_schemer/draft202012/vocab/unevaluated.rb
|
218
|
+
- lib/json_schemer/draft202012/vocab/validation.rb
|
219
|
+
- lib/json_schemer/draft4/meta.rb
|
220
|
+
- lib/json_schemer/draft4/vocab.rb
|
221
|
+
- lib/json_schemer/draft4/vocab/validation.rb
|
222
|
+
- lib/json_schemer/draft6/meta.rb
|
223
|
+
- lib/json_schemer/draft6/vocab.rb
|
224
|
+
- lib/json_schemer/draft7/meta.rb
|
225
|
+
- lib/json_schemer/draft7/vocab.rb
|
226
|
+
- lib/json_schemer/draft7/vocab/validation.rb
|
135
227
|
- lib/json_schemer/ecma_regexp.rb
|
136
228
|
- lib/json_schemer/errors.rb
|
137
229
|
- lib/json_schemer/format.rb
|
230
|
+
- lib/json_schemer/format/duration.rb
|
138
231
|
- lib/json_schemer/format/email.rb
|
139
232
|
- lib/json_schemer/format/hostname.rb
|
233
|
+
- lib/json_schemer/format/json_pointer.rb
|
140
234
|
- lib/json_schemer/format/uri_template.rb
|
141
|
-
- lib/json_schemer/
|
142
|
-
- lib/json_schemer/
|
143
|
-
- lib/json_schemer/
|
144
|
-
- lib/json_schemer/
|
145
|
-
- lib/json_schemer/
|
146
|
-
- lib/json_schemer/
|
147
|
-
- lib/json_schemer/
|
235
|
+
- lib/json_schemer/keyword.rb
|
236
|
+
- lib/json_schemer/location.rb
|
237
|
+
- lib/json_schemer/openapi.rb
|
238
|
+
- lib/json_schemer/openapi30/document.rb
|
239
|
+
- lib/json_schemer/openapi30/meta.rb
|
240
|
+
- lib/json_schemer/openapi30/vocab.rb
|
241
|
+
- lib/json_schemer/openapi30/vocab/base.rb
|
242
|
+
- lib/json_schemer/openapi31/document.rb
|
243
|
+
- lib/json_schemer/openapi31/meta.rb
|
244
|
+
- lib/json_schemer/openapi31/vocab.rb
|
245
|
+
- lib/json_schemer/openapi31/vocab/base.rb
|
246
|
+
- lib/json_schemer/output.rb
|
247
|
+
- lib/json_schemer/resources.rb
|
248
|
+
- lib/json_schemer/result.rb
|
249
|
+
- lib/json_schemer/schema.rb
|
148
250
|
- lib/json_schemer/version.rb
|
149
251
|
homepage: https://github.com/davishmcclurg/json_schemer
|
150
252
|
licenses:
|
151
253
|
- MIT
|
152
254
|
metadata: {}
|
153
|
-
post_install_message:
|
154
255
|
rdoc_options: []
|
155
256
|
require_paths:
|
156
257
|
- lib
|
@@ -158,15 +259,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
259
|
requirements:
|
159
260
|
- - ">="
|
160
261
|
- !ruby/object:Gem::Version
|
161
|
-
version: '2.
|
262
|
+
version: '2.7'
|
162
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
264
|
requirements:
|
164
265
|
- - ">="
|
165
266
|
- !ruby/object:Gem::Version
|
166
267
|
version: '0'
|
167
268
|
requirements: []
|
168
|
-
rubygems_version: 3.
|
169
|
-
signing_key:
|
269
|
+
rubygems_version: 3.6.2
|
170
270
|
specification_version: 4
|
171
|
-
summary: JSON Schema validator. Supports drafts 4, 6,
|
271
|
+
summary: JSON Schema validator. Supports drafts 4, 6, 7, 2019-09, 2020-12, OpenAPI
|
272
|
+
3.0, and OpenAPI 3.1.
|
172
273
|
test_files: []
|