json_schemer 1.0.2 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +1 -6
- data/CHANGELOG.md +25 -0
- data/Gemfile.lock +2 -2
- data/README.md +137 -14
- data/json_schemer.gemspec +1 -1
- data/lib/json_schemer/draft201909/meta.rb +335 -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 +361 -0
- data/lib/json_schemer/draft202012/vocab/applicator.rb +382 -0
- data/lib/json_schemer/draft202012/vocab/content.rb +44 -0
- data/lib/json_schemer/draft202012/vocab/core.rb +154 -0
- data/lib/json_schemer/draft202012/vocab/format_annotation.rb +31 -0
- data/lib/json_schemer/draft202012/vocab/format_assertion.rb +29 -0
- data/lib/json_schemer/draft202012/vocab/meta_data.rb +30 -0
- data/lib/json_schemer/draft202012/vocab/unevaluated.rb +94 -0
- data/lib/json_schemer/draft202012/vocab/validation.rb +286 -0
- data/lib/json_schemer/draft202012/vocab.rb +103 -0
- data/lib/json_schemer/draft4/meta.rb +155 -0
- data/lib/json_schemer/draft4/vocab/validation.rb +39 -0
- data/lib/json_schemer/draft4/vocab.rb +18 -0
- data/lib/json_schemer/draft6/meta.rb +161 -0
- data/lib/json_schemer/draft6/vocab.rb +16 -0
- data/lib/json_schemer/draft7/meta.rb +178 -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/email.rb +56 -0
- data/lib/json_schemer/format/json_pointer.rb +18 -0
- data/lib/json_schemer/format.rb +53 -34
- data/lib/json_schemer/keyword.rb +41 -0
- data/lib/json_schemer/location.rb +25 -0
- data/lib/json_schemer/openapi.rb +40 -0
- data/lib/json_schemer/openapi30/document.rb +1673 -0
- data/lib/json_schemer/openapi30/meta.rb +26 -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 +1559 -0
- data/lib/json_schemer/openapi31/meta.rb +128 -0
- data/lib/json_schemer/openapi31/vocab/base.rb +89 -0
- data/lib/json_schemer/openapi31/vocab.rb +18 -0
- data/lib/json_schemer/output.rb +55 -0
- data/lib/json_schemer/result.rb +168 -0
- data/lib/json_schemer/schema.rb +390 -0
- data/lib/json_schemer/version.rb +1 -1
- data/lib/json_schemer.rb +198 -24
- metadata +43 -10
- 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
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module JSONSchemer
|
3
|
+
module OpenAPI30
|
4
|
+
BASE_URI = URI('json-schemer://openapi30/schema')
|
5
|
+
SCHEMA = {
|
6
|
+
'id' => 'json-schemer://openapi30/schema',
|
7
|
+
'$schema' => 'http://json-schema.org/draft-04/schema#',
|
8
|
+
'allOf' => [
|
9
|
+
{ '$ref' => 'http://json-schema.org/draft-04/schema#' },
|
10
|
+
{
|
11
|
+
'oneOf' => [
|
12
|
+
{ '$ref' => 'https://spec.openapis.org/oas/3.0/schema/2021-09-28#/definitions/Schema' },
|
13
|
+
{ '$ref' => 'https://spec.openapis.org/oas/3.0/schema/2021-09-28#/definitions/Reference' }
|
14
|
+
]
|
15
|
+
}
|
16
|
+
]
|
17
|
+
}
|
18
|
+
|
19
|
+
module Meta
|
20
|
+
SCHEMAS = {
|
21
|
+
Draft4::BASE_URI.dup.tap { |uri| uri.fragment = nil } => Draft4::SCHEMA,
|
22
|
+
URI('https://spec.openapis.org/oas/3.0/schema/2021-09-28') => Document::SCHEMA
|
23
|
+
}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module JSONSchemer
|
3
|
+
module OpenAPI30
|
4
|
+
module Vocab
|
5
|
+
module Base
|
6
|
+
class Type < Draft4::Vocab::Validation::Type
|
7
|
+
def parse
|
8
|
+
if schema.value['nullable'] == true
|
9
|
+
(Array(value) + ['null']).uniq
|
10
|
+
else
|
11
|
+
super
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module JSONSchemer
|
3
|
+
module OpenAPI30
|
4
|
+
module Vocab
|
5
|
+
# https://spec.openapis.org/oas/v3.0.3#schema-object
|
6
|
+
BASE = OpenAPI31::Vocab::BASE.merge(
|
7
|
+
# https://spec.openapis.org/oas/v3.0.3#fixed-fields-19
|
8
|
+
'type' => Base::Type
|
9
|
+
)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|