committee 5.0.0 → 5.2.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/lib/committee/drivers.rb +29 -7
- data/lib/committee/middleware/request_validation.rb +1 -1
- data/lib/committee/schema_validator/open_api_3.rb +1 -1
- data/lib/committee/schema_validator/option.rb +17 -17
- data/lib/committee/version.rb +1 -1
- data/lib/committee.rb +1 -1
- data/test/bin/committee_stub_test.rb +0 -2
- data/test/committee_test.rb +8 -6
- data/test/drivers_test.rb +43 -0
- data/test/middleware/base_test.rb +0 -3
- data/test/middleware/request_validation_open_api_3_test.rb +0 -3
- data/test/middleware/request_validation_test.rb +0 -3
- data/test/middleware/response_validation_open_api_3_test.rb +0 -3
- data/test/middleware/response_validation_test.rb +0 -11
- data/test/middleware/stub_test.rb +0 -3
- data/test/schema_validator/hyper_schema/router_test.rb +0 -4
- data/test/schema_validator/open_api_3/operation_wrapper_test.rb +1 -6
- data/test/schema_validator/open_api_3/request_validator_test.rb +0 -3
- data/test/schema_validator/open_api_3/response_validator_test.rb +1 -5
- data/test/test/methods_new_version_test.rb +0 -3
- data/test/test/methods_test.rb +0 -3
- data/test/test_helper.rb +12 -1
- metadata +9 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95c313e8694c8ad00b4f0ed75ac173f177cb62c3cc18494a946df9b9066abbaa
|
4
|
+
data.tar.gz: 7080a9ec40c56d2d47fde358217068ac3dcc907528ac359e2a94089f9b9f068e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4530289393371c110c67564e277dbfdaab9f6a83aff9cc3e8c625ee83a6fabb3fb4c1c0abd3e93d83577a8204143672ccab998e50aabccbc866cb619c43f698c
|
7
|
+
data.tar.gz: 91feff9fb8ee526fe0715ce12e570fe53782750ad823a44a31f549d738c0ce9d65421a1323568992e43dd16a4e202130fbd3f020ac836eab5a19a0626a59d5d0
|
data/lib/committee/drivers.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'digest'
|
4
|
+
|
3
5
|
module Committee
|
4
6
|
module Drivers
|
5
7
|
# Gets a driver instance from the specified name. Raises ArgumentError for
|
@@ -36,13 +38,16 @@ module Committee
|
|
36
38
|
# @param [String] schema_path
|
37
39
|
# @return [Committee::Driver]
|
38
40
|
def self.load_from_file(schema_path, parser_options: {})
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
41
|
+
@__load_from_file_cache ||= {}
|
42
|
+
@__load_from_file_cache[cache_key(schema_path, parser_options)] ||= begin
|
43
|
+
case File.extname(schema_path)
|
44
|
+
when '.json'
|
45
|
+
load_from_json(schema_path, parser_options: parser_options)
|
46
|
+
when '.yaml', '.yml'
|
47
|
+
load_from_yaml(schema_path, parser_options: parser_options)
|
48
|
+
else
|
49
|
+
raise "Committee only supports the following file extensions: '.json', '.yaml', '.yml'"
|
50
|
+
end
|
46
51
|
end
|
47
52
|
end
|
48
53
|
|
@@ -65,6 +70,12 @@ module Committee
|
|
65
70
|
return Committee::Drivers::OpenAPI3::Driver.new.parse(openapi)
|
66
71
|
end
|
67
72
|
|
73
|
+
if (version = hash['openapi'])
|
74
|
+
if Gem::Version.new(version) >= Gem::Version.new("3.1")
|
75
|
+
raise OpenAPI3Unsupported.new('Committee does not support OpenAPI 3.1+ yet')
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
68
79
|
driver = if hash['swagger'] == '2.0'
|
69
80
|
Committee::Drivers::OpenAPI2::Driver.new
|
70
81
|
else
|
@@ -74,6 +85,17 @@ module Committee
|
|
74
85
|
# TODO: in the future, pass `opts` here and allow optionality in other drivers?
|
75
86
|
driver.parse(hash)
|
76
87
|
end
|
88
|
+
|
89
|
+
class << self
|
90
|
+
private
|
91
|
+
|
92
|
+
def cache_key(schema_path, parser_options)
|
93
|
+
[
|
94
|
+
File.exist?(schema_path) ? Digest::MD5.hexdigest(File.read(schema_path)) : nil,
|
95
|
+
parser_options.hash,
|
96
|
+
].join('_')
|
97
|
+
end
|
98
|
+
end
|
77
99
|
end
|
78
100
|
end
|
79
101
|
|
@@ -87,7 +87,7 @@ module Committee
|
|
87
87
|
|
88
88
|
request.env[validator_option.headers_key] = unpacker.unpack_headers(request)
|
89
89
|
|
90
|
-
request_param,
|
90
|
+
request_param, _is_form_params = unpacker.unpack_request_params(request)
|
91
91
|
request.env[validator_option.request_body_hash_key] = request_param
|
92
92
|
request.env[validator_option.path_hash_key] = coerce_path_params
|
93
93
|
|
@@ -29,30 +29,30 @@ module Committee
|
|
29
29
|
|
30
30
|
def initialize(options, schema, schema_type)
|
31
31
|
# Non-boolean options
|
32
|
-
@headers_key
|
33
|
-
@params_key
|
34
|
-
@query_hash_key
|
35
|
-
@path_hash_key
|
32
|
+
@headers_key = options[:headers_key] || "committee.headers"
|
33
|
+
@params_key = options[:params_key] || "committee.params"
|
34
|
+
@query_hash_key = options[:query_hash_key] || "committee.query_hash"
|
35
|
+
@path_hash_key = options[:path_hash_key] || "committee.path_hash"
|
36
36
|
@request_body_hash_key = options[:request_body_hash_key] || "committee.request_body_hash"
|
37
37
|
|
38
|
-
@prefix
|
38
|
+
@prefix = options[:prefix]
|
39
39
|
|
40
40
|
# Boolean options and have a common value by default
|
41
|
-
@allow_form_params
|
42
|
-
@allow_query_params
|
43
|
-
@check_content_type
|
44
|
-
@check_header
|
45
|
-
@coerce_recursive
|
46
|
-
@optimistic_json
|
47
|
-
@parse_response_by_content_type
|
41
|
+
@allow_form_params = options.fetch(:allow_form_params, true)
|
42
|
+
@allow_query_params = options.fetch(:allow_query_params, true)
|
43
|
+
@check_content_type = options.fetch(:check_content_type, true)
|
44
|
+
@check_header = options.fetch(:check_header, true)
|
45
|
+
@coerce_recursive = options.fetch(:coerce_recursive, true)
|
46
|
+
@optimistic_json = options.fetch(:optimistic_json, false)
|
47
|
+
@parse_response_by_content_type = options.fetch(:parse_response_by_content_type, true)
|
48
48
|
@parameter_overwite_by_rails_rule = options.fetch(:parameter_overwite_by_rails_rule, true)
|
49
49
|
|
50
50
|
# Boolean options and have a different value by default
|
51
|
-
@allow_get_body
|
52
|
-
@coerce_date_times
|
53
|
-
@coerce_form_params
|
54
|
-
@coerce_path_params
|
55
|
-
@coerce_query_params
|
51
|
+
@allow_get_body = options.fetch(:allow_get_body, schema.driver.default_allow_get_body)
|
52
|
+
@coerce_date_times = options.fetch(:coerce_date_times, schema.driver.default_coerce_date_times)
|
53
|
+
@coerce_form_params = options.fetch(:coerce_form_params, schema.driver.default_coerce_form_params)
|
54
|
+
@coerce_path_params = options.fetch(:coerce_path_params, schema.driver.default_path_params)
|
55
|
+
@coerce_query_params = options.fetch(:coerce_query_params, schema.driver.default_query_params)
|
56
56
|
@validate_success_only = options.fetch(:validate_success_only, schema.driver.default_validate_success_only)
|
57
57
|
end
|
58
58
|
end
|
data/lib/committee/version.rb
CHANGED
data/lib/committee.rb
CHANGED
@@ -22,7 +22,7 @@ module Committee
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def self.warn_deprecated_until_6(cond, message)
|
25
|
-
raise "remove deprecated!"
|
25
|
+
raise "remove deprecated!" unless Committee::VERSION.start_with?("5")
|
26
26
|
warn("[DEPRECATION] #{message}") if cond
|
27
27
|
end
|
28
28
|
end
|
data/test/committee_test.rb
CHANGED
@@ -19,13 +19,15 @@ describe Committee do
|
|
19
19
|
old_stderr = $stderr
|
20
20
|
$stderr = StringIO.new
|
21
21
|
begin
|
22
|
-
stub(
|
23
|
-
|
24
|
-
|
22
|
+
Committee.stub(:debug?, false) do
|
23
|
+
Committee.log_debug "blah"
|
24
|
+
assert_equal "", $stderr.string
|
25
|
+
end
|
25
26
|
|
26
|
-
stub(
|
27
|
-
|
28
|
-
|
27
|
+
Committee.stub(:debug?, true) do
|
28
|
+
Committee.log_debug "blah"
|
29
|
+
assert_equal "blah\n", $stderr.string
|
30
|
+
end
|
29
31
|
ensure
|
30
32
|
$stderr = old_stderr
|
31
33
|
end
|
data/test/drivers_test.rb
CHANGED
@@ -48,6 +48,13 @@ describe Committee::Drivers do
|
|
48
48
|
assert_kind_of Committee::Drivers::OpenAPI3::Schema, s
|
49
49
|
end
|
50
50
|
|
51
|
+
it 'fails to load OpenAPI 3.1+' do
|
52
|
+
e = assert_raises(Committee::OpenAPI3Unsupported) do
|
53
|
+
Committee::Drivers.load_from_file(open_api_3_1_schema_path, parser_options:{strict_reference_validation: true})
|
54
|
+
end
|
55
|
+
assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
|
56
|
+
end
|
57
|
+
|
51
58
|
it 'fails to load OpenAPI 3 with invalid reference' do
|
52
59
|
parser_options = { strict_reference_validation: true }
|
53
60
|
assert_raises(OpenAPIParser::MissingReferenceError) do
|
@@ -67,6 +74,35 @@ describe Committee::Drivers do
|
|
67
74
|
end
|
68
75
|
assert_equal "Committee only supports the following file extensions: '.json', '.yaml', '.yml'", e.message
|
69
76
|
end
|
77
|
+
|
78
|
+
describe 'cache behavior' do
|
79
|
+
describe 'when loading the same file' do
|
80
|
+
it 'returns the same object when the options are identical' do
|
81
|
+
assert_equal(
|
82
|
+
Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
|
83
|
+
Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
|
84
|
+
)
|
85
|
+
end
|
86
|
+
|
87
|
+
it 'returns different objects if the options are different' do
|
88
|
+
refute_equal(
|
89
|
+
Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
|
90
|
+
Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: false}).object_id,
|
91
|
+
)
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'returns different objects if the file contents have changed' do
|
95
|
+
object_id = Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id
|
96
|
+
original_file_contents = File.read(open_api_3_schema_path)
|
97
|
+
File.write(open_api_3_schema_path, original_file_contents + "\n")
|
98
|
+
refute_equal(
|
99
|
+
Committee::Drivers.load_from_file(open_api_3_schema_path, parser_options:{strict_reference_validation: true}).object_id,
|
100
|
+
object_id,
|
101
|
+
)
|
102
|
+
File.write(open_api_3_schema_path, original_file_contents)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
70
106
|
end
|
71
107
|
|
72
108
|
describe 'load_from_json(schema_path)' do
|
@@ -109,6 +145,13 @@ describe Committee::Drivers do
|
|
109
145
|
assert_kind_of Committee::Drivers::Schema, s
|
110
146
|
assert_kind_of Committee::Drivers::HyperSchema::Schema, s
|
111
147
|
end
|
148
|
+
|
149
|
+
it 'fails to load OpenAPI 3.1+' do
|
150
|
+
e = assert_raises(Committee::OpenAPI3Unsupported) do
|
151
|
+
Committee::Drivers.load_from_data(open_api_3_1_data)
|
152
|
+
end
|
153
|
+
assert_equal 'Committee does not support OpenAPI 3.1+ yet', e.message
|
154
|
+
end
|
112
155
|
end
|
113
156
|
end
|
114
157
|
|
@@ -117,9 +117,6 @@ describe Committee::Middleware::Base do
|
|
117
117
|
private
|
118
118
|
|
119
119
|
def new_rack_app(options = {})
|
120
|
-
# TODO: delete when 5.0.0 released because default value changed
|
121
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
122
|
-
|
123
120
|
Rack::Builder.new {
|
124
121
|
use Committee::Middleware::RequestValidation, options
|
125
122
|
run lambda { |_|
|
@@ -615,9 +615,6 @@ describe Committee::Middleware::RequestValidation do
|
|
615
615
|
end
|
616
616
|
|
617
617
|
def new_rack_app_with_lambda(check_lambda, options = {})
|
618
|
-
# TODO: delete when 5.0.0 released because default value changed
|
619
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
620
|
-
|
621
618
|
Rack::Builder.new {
|
622
619
|
use Committee::Middleware::RequestValidation, options
|
623
620
|
run check_lambda
|
@@ -505,9 +505,6 @@ describe Committee::Middleware::RequestValidation do
|
|
505
505
|
|
506
506
|
|
507
507
|
def new_rack_app_with_lambda(check_lambda, options = {})
|
508
|
-
# TODO: delete when 5.0.0 released because default value changed
|
509
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
510
|
-
|
511
508
|
Rack::Builder.new {
|
512
509
|
use Committee::Middleware::RequestValidation, options
|
513
510
|
run check_lambda
|
@@ -273,9 +273,6 @@ describe Committee::Middleware::ResponseValidation do
|
|
273
273
|
private
|
274
274
|
|
275
275
|
def new_response_rack(response, headers = {}, options = {}, rack_options = {})
|
276
|
-
# TODO: delete when 5.0.0 released because default value changed
|
277
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
278
|
-
|
279
276
|
status = rack_options[:status] || 200
|
280
277
|
content_type = rack_options[:content_type] || "application/json"
|
281
278
|
headers = {
|
@@ -15,14 +15,6 @@ describe Committee::Middleware::ResponseValidation do
|
|
15
15
|
assert_equal 200, last_response.status
|
16
16
|
end
|
17
17
|
|
18
|
-
# TODO: remove 5.0.0
|
19
|
-
it "passes through a valid response" do
|
20
|
-
# will show deprecated message
|
21
|
-
@app = new_rack_app(JSON.generate([ValidApp]), {}, schema: hyper_schema, strict: true)
|
22
|
-
get "/apps"
|
23
|
-
assert_equal 200, last_response.status
|
24
|
-
end
|
25
|
-
|
26
18
|
it "doesn't call error_handler (has a arg) when response is valid" do
|
27
19
|
called = false
|
28
20
|
pr = ->(_e) { called = true }
|
@@ -173,9 +165,6 @@ describe Committee::Middleware::ResponseValidation do
|
|
173
165
|
private
|
174
166
|
|
175
167
|
def new_rack_app(response, headers = {}, options = {})
|
176
|
-
# TODO: delete when 5.0.0 released because default value changed
|
177
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
178
|
-
|
179
168
|
headers = {
|
180
169
|
"Content-Type" => "application/json"
|
181
170
|
}.merge(headers)
|
@@ -113,9 +113,6 @@ describe Committee::Middleware::Stub do
|
|
113
113
|
response = options.delete(:response)
|
114
114
|
suppress = options.delete(:suppress)
|
115
115
|
|
116
|
-
# TODO: delete when 5.0.0 released because default value changed
|
117
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
118
|
-
|
119
116
|
Rack::Builder.new {
|
120
117
|
use Committee::Middleware::Stub, options
|
121
118
|
run lambda { |env|
|
@@ -69,8 +69,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def hyper_schema_router(options = {})
|
72
|
-
# TODO: delete when 5.0.0 released because default value changed
|
73
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
74
72
|
schema = Committee::Drivers::HyperSchema::Driver.new.parse(hyper_schema_data)
|
75
73
|
validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
|
76
74
|
|
@@ -78,8 +76,6 @@ describe Committee::SchemaValidator::HyperSchema::Router do
|
|
78
76
|
end
|
79
77
|
|
80
78
|
def open_api_2_router(options = {})
|
81
|
-
# TODO: delete when 5.0.0 released because default value changed
|
82
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
83
79
|
schema = Committee::Drivers::OpenAPI2::Driver.new.parse(open_api_2_data)
|
84
80
|
validator_option = Committee::SchemaValidator::Option.new(options, schema, :hyper_schema)
|
85
81
|
|
@@ -9,12 +9,7 @@ describe Committee::SchemaValidator::OpenAPI3::OperationWrapper do
|
|
9
9
|
before do
|
10
10
|
@path = '/validate'
|
11
11
|
@method = 'post'
|
12
|
-
|
13
|
-
# TODO: delete when 5.0.0 released because default value changed
|
14
|
-
options = {}
|
15
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
16
|
-
|
17
|
-
@validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
|
12
|
+
@validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
|
18
13
|
end
|
19
14
|
|
20
15
|
def operation_object
|
@@ -96,9 +96,6 @@ describe Committee::SchemaValidator::OpenAPI3::RequestValidator do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
def new_rack_app(options = {})
|
99
|
-
# TODO: delete when 5.0.0 released because default value changed
|
100
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
101
|
-
|
102
99
|
Rack::Builder.new {
|
103
100
|
use Committee::Middleware::RequestValidation, options
|
104
101
|
run lambda { |_|
|
@@ -13,11 +13,7 @@ describe Committee::SchemaValidator::OpenAPI3::ResponseValidator do
|
|
13
13
|
@path = '/validate'
|
14
14
|
@method = 'post'
|
15
15
|
|
16
|
-
|
17
|
-
options = {}
|
18
|
-
options[:parse_response_by_content_type] = true if options[:parse_response_by_content_type] == nil
|
19
|
-
|
20
|
-
@validator_option = Committee::SchemaValidator::Option.new(options, open_api_3_schema, :open_api_3)
|
16
|
+
@validator_option = Committee::SchemaValidator::Option.new({}, open_api_3_schema, :open_api_3)
|
21
17
|
end
|
22
18
|
|
23
19
|
it "passes through a valid response" do
|
@@ -30,9 +30,6 @@ describe Committee::Test::Methods do
|
|
30
30
|
@committee_schema = nil
|
31
31
|
|
32
32
|
@committee_options = {schema: hyper_schema}
|
33
|
-
|
34
|
-
# TODO: delete when 5.0.0 released because default value changed
|
35
|
-
@committee_options[:parse_response_by_content_type] = false
|
36
33
|
end
|
37
34
|
|
38
35
|
describe "#assert_schema_conform" do
|
data/test/test/methods_test.rb
CHANGED
@@ -29,9 +29,6 @@ describe Committee::Test::Methods do
|
|
29
29
|
@committee_router = nil
|
30
30
|
@committee_schema = nil
|
31
31
|
@committee_options = {}
|
32
|
-
|
33
|
-
# TODO: delete when 5.0.0 released because default value changed
|
34
|
-
@committee_options[:parse_response_by_content_type] = true
|
35
32
|
end
|
36
33
|
|
37
34
|
describe "Hyper-Schema" do
|
data/test/test_helper.rb
CHANGED
@@ -21,7 +21,6 @@ require "minitest"
|
|
21
21
|
require "minitest/spec"
|
22
22
|
require "minitest/autorun"
|
23
23
|
require "rack/test"
|
24
|
-
require "rr"
|
25
24
|
require "pry"
|
26
25
|
require "stringio"
|
27
26
|
|
@@ -91,6 +90,14 @@ def open_api_3_data
|
|
91
90
|
end
|
92
91
|
end
|
93
92
|
|
93
|
+
def open_api_3_1_data
|
94
|
+
if YAML.respond_to?(:unsafe_load_file)
|
95
|
+
YAML.unsafe_load_file(open_api_3_1_schema_path)
|
96
|
+
else
|
97
|
+
YAML.load_file(open_api_3_1_schema_path)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
94
101
|
def hyper_schema_schema_path
|
95
102
|
"./test/data/hyperschema/paas.json"
|
96
103
|
end
|
@@ -115,6 +122,10 @@ def open_api_3_0_1_schema_path
|
|
115
122
|
"./test/data/openapi3/3_0_1.yaml"
|
116
123
|
end
|
117
124
|
|
125
|
+
def open_api_3_1_schema_path
|
126
|
+
"./test/data/openapi3/3_1.yaml"
|
127
|
+
end
|
128
|
+
|
118
129
|
def open_api_3_invalid_reference_path
|
119
130
|
"./test/data/openapi3/invalid_reference.yaml"
|
120
131
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: committee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandur
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2024-05-04 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: json_schema
|
@@ -52,14 +52,14 @@ dependencies:
|
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
55
|
+
version: '2.0'
|
56
56
|
type: :runtime
|
57
57
|
prerelease: false
|
58
58
|
version_requirements: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - "~>"
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: '
|
62
|
+
version: '2.0'
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
64
|
name: minitest
|
65
65
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,28 +94,14 @@ dependencies:
|
|
94
94
|
requirements:
|
95
95
|
- - "~>"
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version: '
|
97
|
+
version: '13.1'
|
98
98
|
type: :development
|
99
99
|
prerelease: false
|
100
100
|
version_requirements: !ruby/object:Gem::Requirement
|
101
101
|
requirements:
|
102
102
|
- - "~>"
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version: '
|
105
|
-
- !ruby/object:Gem::Dependency
|
106
|
-
name: rr
|
107
|
-
requirement: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - "~>"
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '1.1'
|
112
|
-
type: :development
|
113
|
-
prerelease: false
|
114
|
-
version_requirements: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - "~>"
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '1.1'
|
104
|
+
version: '13.1'
|
119
105
|
- !ruby/object:Gem::Dependency
|
120
106
|
name: pry
|
121
107
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,20 +132,6 @@ dependencies:
|
|
146
132
|
version: '0'
|
147
133
|
- !ruby/object:Gem::Dependency
|
148
134
|
name: rubocop
|
149
|
-
requirement: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - "<"
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: 1.13.0
|
154
|
-
type: :development
|
155
|
-
prerelease: false
|
156
|
-
version_requirements: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - "<"
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: 1.13.0
|
161
|
-
- !ruby/object:Gem::Dependency
|
162
|
-
name: rubocop-performance
|
163
135
|
requirement: !ruby/object:Gem::Requirement
|
164
136
|
requirements:
|
165
137
|
- - ">="
|
@@ -173,21 +145,7 @@ dependencies:
|
|
173
145
|
- !ruby/object:Gem::Version
|
174
146
|
version: '0'
|
175
147
|
- !ruby/object:Gem::Dependency
|
176
|
-
name: rubocop-
|
177
|
-
requirement: !ruby/object:Gem::Requirement
|
178
|
-
requirements:
|
179
|
-
- - ">="
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '0'
|
182
|
-
type: :development
|
183
|
-
prerelease: false
|
184
|
-
version_requirements: !ruby/object:Gem::Requirement
|
185
|
-
requirements:
|
186
|
-
- - ">="
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
version: '0'
|
189
|
-
- !ruby/object:Gem::Dependency
|
190
|
-
name: rubocop-rake
|
148
|
+
name: rubocop-performance
|
191
149
|
requirement: !ruby/object:Gem::Requirement
|
192
150
|
requirements:
|
193
151
|
- - ">="
|
@@ -314,14 +272,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
314
272
|
requirements:
|
315
273
|
- - ">="
|
316
274
|
- !ruby/object:Gem::Version
|
317
|
-
version: 2.
|
275
|
+
version: 2.7.0
|
318
276
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
319
277
|
requirements:
|
320
278
|
- - ">="
|
321
279
|
- !ruby/object:Gem::Version
|
322
280
|
version: '0'
|
323
281
|
requirements: []
|
324
|
-
rubygems_version: 3.
|
282
|
+
rubygems_version: 3.4.20
|
325
283
|
signing_key:
|
326
284
|
specification_version: 4
|
327
285
|
summary: A collection of Rack middleware to support JSON Schema.
|