openapi3_parser 0.9.1 → 0.10.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 +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +10 -0
- data/Gemfile +10 -0
- data/README.md +2 -2
- data/lib/openapi3_parser/document/reference_registry.rb +1 -1
- data/lib/openapi3_parser/markdown.rb +1 -1
- data/lib/openapi3_parser/node/array.rb +2 -2
- data/lib/openapi3_parser/node/context.rb +1 -1
- data/lib/openapi3_parser/node/map.rb +2 -2
- data/lib/openapi3_parser/node/object.rb +2 -2
- data/lib/openapi3_parser/node/placeholder.rb +2 -2
- data/lib/openapi3_parser/node_factory/array.rb +2 -2
- data/lib/openapi3_parser/node_factory/context.rb +4 -4
- data/lib/openapi3_parser/node_factory/field.rb +1 -1
- data/lib/openapi3_parser/node_factory/map.rb +2 -2
- data/lib/openapi3_parser/node_factory/object_factory/dsl.rb +2 -2
- data/lib/openapi3_parser/node_factory/object_factory/node_builder.rb +1 -1
- data/lib/openapi3_parser/node_factory/object_factory/validator.rb +5 -5
- data/lib/openapi3_parser/node_factory/paths.rb +1 -1
- data/lib/openapi3_parser/node_factory/request_body.rb +1 -1
- data/lib/openapi3_parser/node_factory/responses.rb +2 -2
- data/lib/openapi3_parser/node_factory/type_checker.rb +2 -2
- data/lib/openapi3_parser/node_factory.rb +1 -1
- data/lib/openapi3_parser/source/pointer.rb +8 -3
- data/lib/openapi3_parser/source.rb +2 -2
- data/lib/openapi3_parser/source_input/file.rb +1 -1
- data/lib/openapi3_parser/source_input/raw.rb +2 -2
- data/lib/openapi3_parser/validation/error_collection.rb +2 -2
- data/lib/openapi3_parser/validators/component_keys.rb +1 -1
- data/lib/openapi3_parser/validators/email.rb +1 -1
- data/lib/openapi3_parser/validators/media_type.rb +1 -1
- data/lib/openapi3_parser/validators/mutually_exclusive_fields.rb +3 -3
- data/lib/openapi3_parser/validators/required_fields.rb +1 -1
- data/lib/openapi3_parser/validators/unexpected_fields.rb +1 -1
- data/lib/openapi3_parser/version.rb +1 -1
- data/lib/openapi3_parser.rb +1 -1
- data/openapi3_parser.gemspec +2 -13
- metadata +7 -147
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc09689a55a25d70fd2be58c314a33732a74d9868082c35a71104f34b331ec4c
|
4
|
+
data.tar.gz: 12a9d609fd51e4ab740a2a7895ba75079e288c69925b3da8c045c1b27981e2d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41873fba14f02dc8c94603dabdfde709fa4a8b10ea1e40090314c086f80c40345b4f342f54b6fbeb0eb33a3e0ca2a17fb863acbe2952005108341895462b59a2
|
7
|
+
data.tar.gz: 86b516a12e7eacce495b208554dccdeb4f1e7478156f808f1e503bbe34c49a88a9a3aa05b22998ff0186341835f8fb417c004969a74d4cbe30fb48e58795bc95
|
data/.github/workflows/ci.yml
CHANGED
@@ -3,21 +3,21 @@ jobs:
|
|
3
3
|
test:
|
4
4
|
strategy:
|
5
5
|
matrix:
|
6
|
-
ruby: [
|
6
|
+
ruby: [3.1, 3.2, 3.3]
|
7
7
|
runs-on: ubuntu-latest
|
8
8
|
steps:
|
9
|
-
- uses: actions/checkout@
|
9
|
+
- uses: actions/checkout@v4
|
10
10
|
- uses: ruby/setup-ruby@v1
|
11
11
|
with:
|
12
12
|
bundler-cache: true
|
13
13
|
ruby-version: ${{ matrix.ruby }}
|
14
14
|
- name: Test Ruby ${{ matrix.ruby }}
|
15
15
|
run: bundle exec rake
|
16
|
-
if: matrix.ruby != '
|
16
|
+
if: matrix.ruby != '3.1'
|
17
17
|
- name: Test and publish coverage for Ruby ${{ matrix.ruby }}
|
18
18
|
uses: paambaati/codeclimate-action@v2.7.5
|
19
19
|
env:
|
20
20
|
CC_TEST_REPORTER_ID: 8bc2d8e54331569aeb442094c21cb64a58d6efa0670f65ff00d9ae887f63c0b4
|
21
21
|
with:
|
22
22
|
coverageCommand: bundle exec rake
|
23
|
-
if: matrix.ruby == '
|
23
|
+
if: matrix.ruby == '3.1'
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.1.5
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
# 0.10.0
|
2
|
+
|
3
|
+
- Support JSON pointer tokens of ~0 and ~1, thanks @kuboon
|
4
|
+
- Require Commonmarker > 1, fixing warnings in Ruby > 3.1
|
5
|
+
- Drop support for Ruby < 3.1
|
6
|
+
|
7
|
+
# 0.9.2
|
8
|
+
|
9
|
+
- No longer require a specific Psych dependency to instead use Ruby stdlib
|
10
|
+
|
1
11
|
# 0.9.1
|
2
12
|
|
3
13
|
- Fix Schema#requires? incorrectly returning true for referenced properties -
|
data/Gemfile
CHANGED
@@ -3,3 +3,13 @@
|
|
3
3
|
source "https://rubygems.org"
|
4
4
|
|
5
5
|
gemspec
|
6
|
+
|
7
|
+
gem "bundler"
|
8
|
+
gem "byebug", "~> 11.0"
|
9
|
+
gem "rake"
|
10
|
+
gem "rspec", "~> 3.9"
|
11
|
+
gem "rubocop", "~> 1"
|
12
|
+
gem "rubocop-rake", "~> 0.5"
|
13
|
+
gem "rubocop-rspec", "~> 2"
|
14
|
+
gem "simplecov", "~> 0.19"
|
15
|
+
gem "webmock", "~> 3.8"
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# OpenAPI 3 Parser
|
2
2
|
|
3
|
-
|
3
|
+

|
4
4
|
|
5
5
|
This a Ruby based parser/validator for [OpenAPI 3][openapi-3]. It is used to
|
6
6
|
convert an OpenAPI file (can be a local file, a URL, a string or even a Ruby
|
@@ -121,7 +121,7 @@ You can install this gem into your bundler application by adding this line to
|
|
121
121
|
your Gemfile:
|
122
122
|
|
123
123
|
```
|
124
|
-
gem "openapi3_parser", "~> 0.
|
124
|
+
gem "openapi3_parser", "~> 0.10.0"
|
125
125
|
```
|
126
126
|
|
127
127
|
and then running `$ bundle install`
|
@@ -59,8 +59,8 @@ module Openapi3Parser
|
|
59
59
|
# Iterates through the data of this node, used by Enumerable
|
60
60
|
#
|
61
61
|
# @return [Object]
|
62
|
-
def each(&
|
63
|
-
Placeholder.each(node_data, &
|
62
|
+
def each(&)
|
63
|
+
Placeholder.each(node_data, &)
|
64
64
|
end
|
65
65
|
|
66
66
|
# Provide an array of values for this object, a partner to the #keys
|
@@ -59,8 +59,8 @@ module Openapi3Parser
|
|
59
59
|
# Iterates through the data of this node, used by Enumerable
|
60
60
|
#
|
61
61
|
# @return [Object]
|
62
|
-
def each(&
|
63
|
-
Placeholder.each(node_data, &
|
62
|
+
def each(&)
|
63
|
+
Placeholder.each(node_data, &)
|
64
64
|
end
|
65
65
|
|
66
66
|
# Provide an array of values for this object, a partner to the #keys
|
@@ -18,7 +18,7 @@ module Openapi3Parser
|
|
18
18
|
# Used to iterate through hashes or arrays that may contain
|
19
19
|
# Placeholder objects where these are resolved to being nodes
|
20
20
|
# before iteration
|
21
|
-
def self.each(node_data, &
|
21
|
+
def self.each(node_data, &)
|
22
22
|
resolved =
|
23
23
|
if node_data.respond_to?(:keys)
|
24
24
|
node_data.transform_values do |value|
|
@@ -28,7 +28,7 @@ module Openapi3Parser
|
|
28
28
|
node_data.map { |item| resolve(item) }
|
29
29
|
end
|
30
30
|
|
31
|
-
resolved.each(&
|
31
|
+
resolved.each(&)
|
32
32
|
end
|
33
33
|
|
34
34
|
attr_reader :node_factory, :field, :parent_context
|
@@ -174,7 +174,7 @@ module Openapi3Parser
|
|
174
174
|
else
|
175
175
|
TypeChecker.validate_type(validatable,
|
176
176
|
type: factory.value_input_type,
|
177
|
-
context:
|
177
|
+
context:)
|
178
178
|
end
|
179
179
|
end
|
180
180
|
|
@@ -185,7 +185,7 @@ module Openapi3Parser
|
|
185
185
|
|
186
186
|
first_error = validatable.errors.first
|
187
187
|
raise Openapi3Parser::Error::InvalidData,
|
188
|
-
"Invalid data for #{first_error.context.location_summary}: "\
|
188
|
+
"Invalid data for #{first_error.context.location_summary}: " \
|
189
189
|
"#{first_error.message}"
|
190
190
|
end
|
191
191
|
|
@@ -42,7 +42,7 @@ module Openapi3Parser
|
|
42
42
|
end
|
43
43
|
source_location = Source::Location.next_field(pc.source_location, field)
|
44
44
|
new(input,
|
45
|
-
source_location
|
45
|
+
source_location:,
|
46
46
|
reference_locations: pc.reference_locations)
|
47
47
|
end
|
48
48
|
|
@@ -57,8 +57,8 @@ module Openapi3Parser
|
|
57
57
|
|
58
58
|
data = source_location.data if source_location.source_available?
|
59
59
|
new(data,
|
60
|
-
source_location
|
61
|
-
reference_locations:
|
60
|
+
source_location:,
|
61
|
+
reference_locations:)
|
62
62
|
end
|
63
63
|
|
64
64
|
attr_reader :input, :source_location, :reference_locations
|
@@ -91,7 +91,7 @@ module Openapi3Parser
|
|
91
91
|
# @param [Boolean] recursive
|
92
92
|
# @return [Source::ResolvedReference]
|
93
93
|
def resolve_reference(reference, factory, recursive: false)
|
94
|
-
source.resolve_reference(reference, factory, self, recursive:
|
94
|
+
source.resolve_reference(reference, factory, self, recursive:)
|
95
95
|
end
|
96
96
|
|
97
97
|
# Used to show when an recursive reference loop has begun
|
@@ -108,7 +108,7 @@ module Openapi3Parser
|
|
108
108
|
|
109
109
|
first_error = validatable.errors.first
|
110
110
|
raise Openapi3Parser::Error::InvalidData,
|
111
|
-
"Invalid data for #{first_error.context.location_summary}: "\
|
111
|
+
"Invalid data for #{first_error.context.location_summary}: " \
|
112
112
|
"#{first_error.message}"
|
113
113
|
end
|
114
114
|
|
@@ -193,7 +193,7 @@ module Openapi3Parser
|
|
193
193
|
else
|
194
194
|
TypeChecker.validate_type(validatable,
|
195
195
|
type: factory.value_input_type,
|
196
|
-
context:
|
196
|
+
context:)
|
197
197
|
end
|
198
198
|
end
|
199
199
|
|
@@ -204,7 +204,7 @@ module Openapi3Parser
|
|
204
204
|
|
205
205
|
first_error = validatable.errors.first
|
206
206
|
raise Openapi3Parser::Error::InvalidData,
|
207
|
-
"Invalid data for #{first_error.context.location_summary}: "\
|
207
|
+
"Invalid data for #{first_error.context.location_summary}: " \
|
208
208
|
"#{first_error.message}"
|
209
209
|
end
|
210
210
|
|
@@ -34,7 +34,7 @@ module Openapi3Parser
|
|
34
34
|
Validators::RequiredFields.call(
|
35
35
|
validatable,
|
36
36
|
required_fields: factory.required_fields,
|
37
|
-
raise_on_invalid:
|
37
|
+
raise_on_invalid:
|
38
38
|
)
|
39
39
|
end
|
40
40
|
|
@@ -43,7 +43,7 @@ module Openapi3Parser
|
|
43
43
|
validatable,
|
44
44
|
allow_extensions: factory.allowed_extensions?,
|
45
45
|
allowed_fields: factory.allowed_fields,
|
46
|
-
raise_on_invalid:
|
46
|
+
raise_on_invalid:
|
47
47
|
)
|
48
48
|
end
|
49
49
|
|
@@ -51,7 +51,7 @@ module Openapi3Parser
|
|
51
51
|
Validators::MutuallyExclusiveFields.call(
|
52
52
|
validatable,
|
53
53
|
mutually_exclusive_fields: factory.mutually_exclusive_fields,
|
54
|
-
raise_on_invalid:
|
54
|
+
raise_on_invalid:
|
55
55
|
)
|
56
56
|
end
|
57
57
|
|
@@ -112,7 +112,7 @@ module Openapi3Parser
|
|
112
112
|
name,
|
113
113
|
factory.raw_input[name])
|
114
114
|
field_validatable = Validation::Validatable.new(factory,
|
115
|
-
context:
|
115
|
+
context:)
|
116
116
|
|
117
117
|
valid_input_type = field_config.check_input_type(
|
118
118
|
field_validatable,
|
@@ -145,7 +145,7 @@ module Openapi3Parser
|
|
145
145
|
|
146
146
|
location_summary = errors.first.context.location_summary
|
147
147
|
raise Error::InvalidData,
|
148
|
-
"Invalid data for #{location_summary}: "\
|
148
|
+
"Invalid data for #{location_summary}: " \
|
149
149
|
"#{errors.first.message}"
|
150
150
|
end
|
151
151
|
|
@@ -32,7 +32,7 @@ module Openapi3Parser
|
|
32
32
|
def call(validatable)
|
33
33
|
# This validation isn't actually mentioned in the spec, but it
|
34
34
|
# doesn't seem to make sense if this is an empty hash.
|
35
|
-
return validatable.add_error("Expected to have at least 1 item") if validatable.input.
|
35
|
+
return validatable.add_error("Expected to have at least 1 item") if validatable.input.empty?
|
36
36
|
|
37
37
|
validatable.input.each_key do |key|
|
38
38
|
message = Validators::MediaType.call(key)
|
@@ -13,7 +13,7 @@ module Openapi3Parser
|
|
13
13
|
[1-5]([0-9][0-9]|XX)
|
14
14
|
)
|
15
15
|
\Z
|
16
|
-
/x
|
16
|
+
/x
|
17
17
|
|
18
18
|
def initialize(context)
|
19
19
|
factory = NodeFactory::OptionalReference.new(NodeFactory::Response)
|
@@ -39,7 +39,7 @@ module Openapi3Parser
|
|
39
39
|
return if invalid.empty?
|
40
40
|
|
41
41
|
codes = invalid.map { |k| "'#{k}'" }.join(", ")
|
42
|
-
validatable.add_error("Invalid responses keys: #{codes} - default, "\
|
42
|
+
validatable.add_error("Invalid responses keys: #{codes} - default, " \
|
43
43
|
"status codes and status code ranges allowed")
|
44
44
|
end
|
45
45
|
end
|
@@ -53,7 +53,7 @@ module Openapi3Parser
|
|
53
53
|
return true if !type || valid_type?(context.input)
|
54
54
|
|
55
55
|
raise Error::InvalidType,
|
56
|
-
"Invalid type for #{context.location_summary}: "\
|
56
|
+
"Invalid type for #{context.location_summary}: " \
|
57
57
|
"#{field_error_message}"
|
58
58
|
end
|
59
59
|
|
@@ -61,7 +61,7 @@ module Openapi3Parser
|
|
61
61
|
return true if !type || valid_keys?(context.input)
|
62
62
|
|
63
63
|
raise Error::InvalidType,
|
64
|
-
"Invalid keys for #{context.location_summary}: "\
|
64
|
+
"Invalid keys for #{context.location_summary}: " \
|
65
65
|
"#{keys_error_message}"
|
66
66
|
end
|
67
67
|
|
@@ -13,10 +13,12 @@ module Openapi3Parser
|
|
13
13
|
segments = fragment.split("/").map do |part|
|
14
14
|
next if part == ""
|
15
15
|
|
16
|
+
# replace JSON pointer specific encodings
|
17
|
+
part = part.gsub("~1", "/").gsub("~0", "~")
|
16
18
|
unescaped = CGI.unescape(part.gsub("%20", "+"))
|
17
19
|
unescaped.match?(/\A\d+\z/) ? unescaped.to_i : unescaped
|
18
20
|
end
|
19
|
-
new(segments.compact, absolute:
|
21
|
+
new(segments.compact, absolute:)
|
20
22
|
end
|
21
23
|
|
22
24
|
def self.merge_pointers(base_pointer, new_pointer)
|
@@ -37,8 +39,11 @@ module Openapi3Parser
|
|
37
39
|
end
|
38
40
|
|
39
41
|
def fragment
|
40
|
-
|
41
|
-
|
42
|
+
escaped = segments.map do |s|
|
43
|
+
part = s.to_s.gsub("~", "~0").gsub("/", "~1")
|
44
|
+
CGI.escape(part).gsub("+", "%20")
|
45
|
+
end
|
46
|
+
fragment = escaped.join("/")
|
42
47
|
"##{absolute ? fragment.prepend('/') : fragment}"
|
43
48
|
end
|
44
49
|
|
@@ -31,7 +31,7 @@ module Openapi3Parser
|
|
31
31
|
# @param [Source::Reference] reference
|
32
32
|
# @return [SourceInput]
|
33
33
|
def resolve_next(reference)
|
34
|
-
ResolveNext.call(reference, self, working_directory:
|
34
|
+
ResolveNext.call(reference, self, working_directory:)
|
35
35
|
end
|
36
36
|
|
37
37
|
# @see SourceInput#other
|
@@ -6,7 +6,7 @@ module Openapi3Parser
|
|
6
6
|
# defined for a Components node.
|
7
7
|
# As defined: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.1.md#components-object
|
8
8
|
class ComponentKeys
|
9
|
-
REGEX = /\A[a-zA-Z0-9.\-_]+\Z
|
9
|
+
REGEX = /\A[a-zA-Z0-9.\-_]+\Z/
|
10
10
|
|
11
11
|
def self.call(input)
|
12
12
|
invalid = input.keys.reject { |key| REGEX.match(key) }
|
@@ -37,7 +37,7 @@ module Openapi3Parser
|
|
37
37
|
if raise_on_invalid
|
38
38
|
location_summary = validatable.context.location_summary
|
39
39
|
raise Error::MissingFields,
|
40
|
-
"Mutually exclusive fields for "\
|
40
|
+
"Mutually exclusive fields for " \
|
41
41
|
"#{location_summary}: #{required_errors.first}"
|
42
42
|
else
|
43
43
|
validatable.add_errors(required_errors)
|
@@ -52,8 +52,8 @@ module Openapi3Parser
|
|
52
52
|
if raise_on_invalid
|
53
53
|
location_summary = validatable.context.location_summary
|
54
54
|
raise Error::UnexpectedFields,
|
55
|
-
"Mutually exclusive fields for "\
|
56
|
-
"#{location_summary}: "\
|
55
|
+
"Mutually exclusive fields for " \
|
56
|
+
"#{location_summary}: " \
|
57
57
|
"#{exclusive_errors.first}"
|
58
58
|
else
|
59
59
|
validatable.add_errors(exclusive_errors)
|
@@ -23,7 +23,7 @@ module Openapi3Parser
|
|
23
23
|
if raise_on_invalid
|
24
24
|
location_summary = validatable.context.location_summary
|
25
25
|
raise Openapi3Parser::Error::MissingFields,
|
26
|
-
"Missing required fields for "\
|
26
|
+
"Missing required fields for " \
|
27
27
|
"#{location_summary}: #{missing_fields.sentence_join}"
|
28
28
|
else
|
29
29
|
validatable.add_error(
|
@@ -24,7 +24,7 @@ module Openapi3Parser
|
|
24
24
|
if raise_on_invalid
|
25
25
|
location_summary = validatable.context.location_summary
|
26
26
|
raise Openapi3Parser::Error::UnexpectedFields,
|
27
|
-
"Unexpected fields for #{location_summary}: "\
|
27
|
+
"Unexpected fields for #{location_summary}: " \
|
28
28
|
"#{fields.sentence_join}"
|
29
29
|
else
|
30
30
|
validatable.add_error(
|
data/lib/openapi3_parser.rb
CHANGED
data/openapi3_parser.gemspec
CHANGED
@@ -25,18 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
f.match(%r{^spec/})
|
26
26
|
end
|
27
27
|
|
28
|
-
spec.required_ruby_version = ">=
|
28
|
+
spec.required_ruby_version = ">= 3.1"
|
29
29
|
|
30
|
-
spec.add_dependency "commonmarker", "
|
31
|
-
spec.add_dependency "psych", "~> 3.1"
|
32
|
-
|
33
|
-
spec.add_development_dependency "bundler"
|
34
|
-
spec.add_development_dependency "byebug", "~> 11.0"
|
35
|
-
spec.add_development_dependency "rake"
|
36
|
-
spec.add_development_dependency "rspec", "~> 3.9"
|
37
|
-
spec.add_development_dependency "rubocop", "~> 1"
|
38
|
-
spec.add_development_dependency "rubocop-rake", "~> 0.5"
|
39
|
-
spec.add_development_dependency "rubocop-rspec", "~> 2"
|
40
|
-
spec.add_development_dependency "simplecov", "~> 0.19"
|
41
|
-
spec.add_development_dependency "webmock", "~> 3.8"
|
30
|
+
spec.add_dependency "commonmarker", ">= 1.0"
|
42
31
|
end
|
metadata
CHANGED
@@ -1,169 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: openapi3_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Dew
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: commonmarker
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.17'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.17'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: psych
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '3.1'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '3.1'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: bundler
|
43
15
|
requirement: !ruby/object:Gem::Requirement
|
44
16
|
requirements:
|
45
17
|
- - ">="
|
46
18
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: byebug
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '11.0'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '11.0'
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rake
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
19
|
+
version: '1.0'
|
20
|
+
type: :runtime
|
77
21
|
prerelease: false
|
78
22
|
version_requirements: !ruby/object:Gem::Requirement
|
79
23
|
requirements:
|
80
24
|
- - ">="
|
81
25
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: rspec
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - "~>"
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '3.9'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - "~>"
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '3.9'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: rubocop
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - "~>"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '1'
|
104
|
-
type: :development
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '1'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rubocop-rake
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0.5'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - "~>"
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0.5'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: rubocop-rspec
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '2'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '2'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: simplecov
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
142
|
-
requirements:
|
143
|
-
- - "~>"
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0.19'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
requirements:
|
150
|
-
- - "~>"
|
151
|
-
- !ruby/object:Gem::Version
|
152
|
-
version: '0.19'
|
153
|
-
- !ruby/object:Gem::Dependency
|
154
|
-
name: webmock
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
156
|
-
requirements:
|
157
|
-
- - "~>"
|
158
|
-
- !ruby/object:Gem::Version
|
159
|
-
version: '3.8'
|
160
|
-
type: :development
|
161
|
-
prerelease: false
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
163
|
-
requirements:
|
164
|
-
- - "~>"
|
165
|
-
- !ruby/object:Gem::Version
|
166
|
-
version: '3.8'
|
26
|
+
version: '1.0'
|
167
27
|
description: |2
|
168
28
|
A tool to parse and validate OpenAPI V3 files.
|
169
29
|
Aims to provide complete compatibility with the OpenAPI specification and
|
@@ -310,14 +170,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
310
170
|
requirements:
|
311
171
|
- - ">="
|
312
172
|
- !ruby/object:Gem::Version
|
313
|
-
version:
|
173
|
+
version: '3.1'
|
314
174
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
315
175
|
requirements:
|
316
176
|
- - ">="
|
317
177
|
- !ruby/object:Gem::Version
|
318
178
|
version: '0'
|
319
179
|
requirements: []
|
320
|
-
rubygems_version: 3.
|
180
|
+
rubygems_version: 3.3.27
|
321
181
|
signing_key:
|
322
182
|
specification_version: 4
|
323
183
|
summary: An OpenAPI V3 parser for Ruby
|