openapi_first 0.12.5 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8692df035f2c27738cc74a8265ad45f6235397c0ce35059fdeef29ef54402ba
4
- data.tar.gz: 156a0c22674e9eed4b2a7ffdfff1cde726b721bf63e8cede6c0d006442c72890
3
+ metadata.gz: 4f1e3ae677c078e5e4b64641c76c40a66994edb8599d9001e3673458eb83338d
4
+ data.tar.gz: 6e394c9017964515be4e8970899fe697480600753ca6e81db78d34faed7c982b
5
5
  SHA512:
6
- metadata.gz: 7f4bedb9b730bb1c27a29d04fe7b915f2e61b0ac6305d6faccb52fd7baa962356704ce0ec85c192f36b9bb5ba9323d29cefa014d287c564fc48dcdaa8bd953a1
7
- data.tar.gz: 9341ba6927183ad541b0b5d3dbc4096112a74204ce14abd1b2c72bfa339c757853f93041f80df85aa51d83377380d9ba034ce260885a5ddbbc64cb769e177d16
6
+ metadata.gz: e41290229c5e5bc7d65179783b6b1ec0403ab987433c5b65535c10d3fee00a42440626f26f2a8ffd02d69a63b64684780165cc4398baf873842e20731570a076
7
+ data.tar.gz: b93594502a2dff93be5b0bff277f49431c40cae4a77a263acfac14370c855dbd424ac36156b832ec2f2ef1f892e44c0c7aaf84d6b567d772220da0ec991357a5
data/.rubocop.yml CHANGED
@@ -1,54 +1,14 @@
1
1
  AllCops:
2
2
  TargetRubyVersion: 2.6
3
+ NewCops: enable
4
+ SuggestExtensions: false
3
5
  Style/Documentation:
4
6
  Enabled: false
5
7
  Style/ExponentialNotation:
6
8
  Enabled: true
7
9
  Metrics/BlockLength:
8
10
  Exclude:
9
- - 'spec/**/*.rb'
10
- - '*.gemspec'
11
- Layout/EmptyLinesAroundAttributeAccessor:
12
- Enabled: true
13
- Layout/SpaceAroundMethodCallOperator:
14
- Enabled: true
15
- Lint/DeprecatedOpenSSLConstant:
16
- Enabled: true
17
- Lint/DuplicateElsifCondition:
18
- Enabled: true
19
- Lint/RaiseException:
20
- Enabled: true
21
- Lint/MixedRegexpCaptureTypes:
22
- Enabled: true
23
- Style/RedundantRegexpCharacterClass:
24
- Enabled: true
25
- Style/RedundantRegexpEscape:
26
- Enabled: true
27
- Style/SlicingWithRange:
28
- Enabled: true
29
- Lint/StructNewOverride:
30
- Enabled: true
31
- Style/HashEachMethods:
32
- Enabled: false
33
- Style/AccessorGrouping:
34
- Enabled: true
35
- Style/ArrayCoercion:
36
- Enabled: true
37
- Style/BisectedAttrAccessor:
38
- Enabled: true
39
- Style/CaseLikeIf:
40
- Enabled: true
41
- Style/HashAsLastArrayItem:
42
- Enabled: true
43
- Style/HashLikeCase:
44
- Enabled: true
45
- Style/HashTransformKeys:
46
- Enabled: true
47
- Style/HashTransformValues:
48
- Enabled: true
49
- Style/RedundantAssignment:
50
- Enabled: true
51
- Style/RedundantFetchBlock:
52
- Enabled: true
53
- Style/RedundantFileExtensionInRequire:
54
- Enabled: true
11
+ - "spec/**/*.rb"
12
+ - "*.gemspec"
13
+ Metrics/MethodLength:
14
+ Max: 20
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.14.0
4
+ - Handle custom x-handler field in the API description to find a handler method not based on operationId
5
+ - Add `resolver` option to provide a custom resolver to find a handler method
6
+
7
+ ## 0.13.3
8
+ - Better error message if string does not match format
9
+ - readOnly and writeOnly just works when used inside allOf
10
+
11
+ ## 0.13.2
12
+ - Return indicator (`source: { parameter: 'list/1' }`) in error response body when array item in query parameter is invalid
13
+
14
+ ## 0.13.0
15
+ - Add support for arrays in query parameters (style: form, explode: false)
16
+ - Remove warning when handler is not implemented
17
+
3
18
  ## 0.12.5
4
19
  - Add `not_found: :continue` option to Router to make it do nothing if request is unknown
5
20
 
@@ -15,7 +30,7 @@
15
30
 
16
31
  ## 0.12.1
17
32
  - Fix response when handler returns 404 or 405
18
- - Don't validate the response content if status is 205 (no content)
33
+ - Don't validate the response content if status is 204 (no content)
19
34
 
20
35
  ## 0.12.0
21
36
  - Change `ResponseValidator` to raise an exception if it found a problem
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- openapi_first (0.12.5)
4
+ openapi_first (0.14.0)
5
5
  deep_merge (>= 1.2.1)
6
6
  hanami-router (~> 2.0.alpha3)
7
7
  hanami-utils (~> 2.0.alpha1)
8
- json_schemer (~> 0.2)
8
+ json_schemer (~> 0.2.16)
9
9
  multi_json (~> 1.14)
10
10
  oas_parser (~> 0.25.1)
11
11
  rack (~> 2.2)
@@ -13,51 +13,53 @@ PATH
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
- activesupport (6.0.3.2)
16
+ activesupport (6.1.4)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- zeitwerk (~> 2.2, >= 2.2.2)
22
- addressable (2.7.0)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
22
+ addressable (2.8.0)
23
23
  public_suffix (>= 2.0.2, < 5.0)
24
- ast (2.4.1)
24
+ ast (2.4.2)
25
25
  builder (3.2.4)
26
26
  coderay (1.1.3)
27
- concurrent-ruby (1.1.7)
27
+ concurrent-ruby (1.1.9)
28
28
  deep_merge (1.2.1)
29
29
  diff-lcs (1.4.4)
30
- ecma-re-validator (0.2.1)
31
- regexp_parser (~> 1.2)
32
- hana (1.3.6)
33
- hanami-router (2.0.0.alpha3)
30
+ dry-transformer (0.1.1)
31
+ ecma-re-validator (0.3.0)
32
+ regexp_parser (~> 2.0)
33
+ hana (1.3.7)
34
+ hanami-router (2.0.0.alpha5)
34
35
  mustermann (~> 1.0)
35
36
  mustermann-contrib (~> 1.0)
36
37
  rack (~> 2.0)
37
- hanami-utils (2.0.0.alpha1)
38
+ hanami-utils (2.0.0.alpha2)
38
39
  concurrent-ruby (~> 1.0)
39
- transproc (~> 1.0)
40
+ dry-transformer (~> 0.1)
40
41
  hansi (0.2.0)
41
42
  hash-deep-merge (0.1.1)
42
- i18n (1.8.5)
43
+ i18n (1.8.10)
43
44
  concurrent-ruby (~> 1.0)
44
- json_schemer (0.2.13)
45
- ecma-re-validator (~> 0.2)
45
+ json_schemer (0.2.18)
46
+ ecma-re-validator (~> 0.3)
46
47
  hana (~> 1.3)
47
- regexp_parser (~> 1.5)
48
+ regexp_parser (~> 2.0)
48
49
  uri_template (~> 0.7)
49
50
  method_source (1.0.0)
50
- mini_portile2 (2.4.0)
51
- minitest (5.14.1)
51
+ mini_portile2 (2.6.1)
52
+ minitest (5.14.4)
52
53
  multi_json (1.15.0)
53
54
  mustermann (1.1.1)
54
55
  ruby2_keywords (~> 0.0.1)
55
56
  mustermann-contrib (1.1.1)
56
57
  hansi (~> 0.2.0)
57
58
  mustermann (= 1.1.1)
58
- nokogiri (1.10.10)
59
- mini_portile2 (~> 2.4.0)
60
- oas_parser (0.25.1)
59
+ nokogiri (1.12.2)
60
+ mini_portile2 (~> 2.6.1)
61
+ racc (~> 1.4)
62
+ oas_parser (0.25.4)
61
63
  activesupport (>= 4.0.0)
62
64
  addressable (~> 2.3)
63
65
  builder (~> 3.2.3)
@@ -65,53 +67,52 @@ GEM
65
67
  hash-deep-merge
66
68
  mustermann-contrib (~> 1.1.1)
67
69
  nokogiri
68
- parallel (1.19.2)
69
- parser (2.7.1.4)
70
+ parallel (1.20.1)
71
+ parser (3.0.2.0)
70
72
  ast (~> 2.4.1)
71
- pry (0.13.1)
73
+ pry (0.14.1)
72
74
  coderay (~> 1.1)
73
75
  method_source (~> 1.0)
74
- public_suffix (4.0.5)
76
+ public_suffix (4.0.6)
77
+ racc (1.5.2)
75
78
  rack (2.2.3)
76
79
  rack-test (1.1.0)
77
80
  rack (>= 1.0, < 3)
78
81
  rainbow (3.0.0)
79
- rake (13.0.1)
80
- regexp_parser (1.7.1)
81
- rexml (3.2.4)
82
- rspec (3.9.0)
83
- rspec-core (~> 3.9.0)
84
- rspec-expectations (~> 3.9.0)
85
- rspec-mocks (~> 3.9.0)
86
- rspec-core (3.9.2)
87
- rspec-support (~> 3.9.3)
88
- rspec-expectations (3.9.2)
82
+ rake (13.0.6)
83
+ regexp_parser (2.1.1)
84
+ rexml (3.2.5)
85
+ rspec (3.10.0)
86
+ rspec-core (~> 3.10.0)
87
+ rspec-expectations (~> 3.10.0)
88
+ rspec-mocks (~> 3.10.0)
89
+ rspec-core (3.10.1)
90
+ rspec-support (~> 3.10.0)
91
+ rspec-expectations (3.10.1)
89
92
  diff-lcs (>= 1.2.0, < 2.0)
90
- rspec-support (~> 3.9.0)
91
- rspec-mocks (3.9.1)
93
+ rspec-support (~> 3.10.0)
94
+ rspec-mocks (3.10.2)
92
95
  diff-lcs (>= 1.2.0, < 2.0)
93
- rspec-support (~> 3.9.0)
94
- rspec-support (3.9.3)
95
- rubocop (0.88.0)
96
+ rspec-support (~> 3.10.0)
97
+ rspec-support (3.10.2)
98
+ rubocop (1.18.4)
96
99
  parallel (~> 1.10)
97
- parser (>= 2.7.1.1)
100
+ parser (>= 3.0.0.0)
98
101
  rainbow (>= 2.2.2, < 4.0)
99
- regexp_parser (>= 1.7)
102
+ regexp_parser (>= 1.8, < 3.0)
100
103
  rexml
101
- rubocop-ast (>= 0.1.0, < 1.0)
104
+ rubocop-ast (>= 1.8.0, < 2.0)
102
105
  ruby-progressbar (~> 1.7)
103
- unicode-display_width (>= 1.4.0, < 2.0)
104
- rubocop-ast (0.2.0)
105
- parser (>= 2.7.0.1)
106
- ruby-progressbar (1.10.1)
107
- ruby2_keywords (0.0.2)
108
- thread_safe (0.3.6)
109
- transproc (1.1.1)
110
- tzinfo (1.2.7)
111
- thread_safe (~> 0.1)
112
- unicode-display_width (1.7.0)
106
+ unicode-display_width (>= 1.4.0, < 3.0)
107
+ rubocop-ast (1.9.0)
108
+ parser (>= 3.0.1.1)
109
+ ruby-progressbar (1.11.0)
110
+ ruby2_keywords (0.0.5)
111
+ tzinfo (2.0.4)
112
+ concurrent-ruby (~> 1.0)
113
+ unicode-display_width (2.0.0)
113
114
  uri_template (0.7.0)
114
- zeitwerk (2.4.0)
115
+ zeitwerk (2.4.2)
115
116
 
116
117
  PLATFORMS
117
118
  ruby
@@ -126,4 +127,4 @@ DEPENDENCIES
126
127
  rubocop
127
128
 
128
129
  BUNDLED WITH
129
- 2.1.4
130
+ 2.2.3
data/README.md CHANGED
@@ -19,7 +19,7 @@ OpenapiFirst consists of these Rack middlewares:
19
19
 
20
20
  - [`OpenapiFirst::Router`](#OpenapiFirst::Router) – Finds the OpenAPI operation for the current request or returns 404 if no operation was found. This can be customized.
21
21
  - [`OpenapiFirst::RequestValidation`](#OpenapiFirst::RequestValidation) – Validates the request against the API description and returns 400 if the request is invalid.
22
- - [`OpenapiFirst::Responder`](#OpenapiFirst::Responder) calls the [handler](#handlers) found for the operation.
22
+ - [`OpenapiFirst::Responder`](#OpenapiFirst::Responder) calls the [handler](#handlers) found for the operation, sets the correct content-type and serialized the response body to json if needed.
23
23
  - [`OpenapiFirst::ResponseValidation`](#OpenapiFirst::ResponseValidation) Validates the response and raises an exception if the response body is invalid.
24
24
 
25
25
  ## OpenapiFirst::Router
@@ -29,9 +29,9 @@ You always have to add this middleware first in order to make the other middlewa
29
29
  use OpenapiFirst::Router, spec: OpenapiFirst.load('./openapi/openapi.yaml')
30
30
  ```
31
31
 
32
- This middleware adds `env[OpenapiFirst::OPERATION]` which holds an Operation object that responds to `operation_id` and `path`.
32
+ This middleware adds `env[OpenapiFirst::OPERATION]` which holds an Operation object that responds to `#operation_id`, `#path` (and `#[]` to access raw fields).
33
33
 
34
- Options and their defaults:
34
+ ### Options and defaults
35
35
 
36
36
  | Name | Possible values | Description | Default
37
37
  |:---|---|---|---|
@@ -48,7 +48,7 @@ use OpenapiFirst::RequestValidation
48
48
  ```
49
49
 
50
50
 
51
- Options and their defaults:
51
+ ### Options and defaults
52
52
 
53
53
  | Name | Possible values | Description | Default
54
54
  |:---|---|---|---|
@@ -79,7 +79,12 @@ This middleware adds `env[OpenapiFirst::INBOX]` which holds the (filtered) path
79
79
  ### Parameter validation
80
80
 
81
81
  The middleware filteres all top-level query parameters and paths parameters and tries to convert numeric values. Meaning, if you have an `:something_id` path with `type: integer`, it will try convert the value to an integer.
82
- Note that is currently does not convert date, date-time or time formats and that conversion is currently done only for path and query parameters, but not for the request body. It just works with a parameter with `name: filter[age]`.
82
+
83
+ It just works with a parameter with `name: filter[age]`.
84
+
85
+ OpenapiFirst also supports `type: array` for query parameters and will convert `items` just as described above. [`style`](http://spec.openapis.org/oas/v3.0.3#style-values) and `explode` attributes are not supported for query parameters. It will always act as if `style: form` and `explode: false` were used for query parameters.
86
+
87
+ Conversion is currently done only for path and query parameters, but not for the request body. OpenapiFirst currently does not convert date, date-time or time formats.
83
88
 
84
89
  If you want to forbid _nested_ query parameters you will need to use [`additionalProperties: false`](https://json-schema.org/understanding-json-schema/reference/object.html#properties) in your query parameter JSON schema.
85
90
 
@@ -94,20 +99,29 @@ This will also add the parsed request body to `env[OpenapiFirst::REQUEST_BODY]`.
94
99
 
95
100
  tbd.
96
101
 
102
+ ### readOnly / writeOnly properties
103
+
104
+ Request validation fails if request includes a property with `readOnly: true`.
105
+
106
+ Response validation fails if response body includes a property with `writeOnly: true`.
107
+
97
108
  ## OpenapiFirst::Responder
98
109
 
99
110
  This Rack endpoint maps the HTTP request to a method call based on the [operationId](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#operation-object) in your API description and calls it. Responder also adds a content-type to the response.
100
111
 
101
- Currently there are no customization options for this part. Please [share your ideas](#contributing) on how to best meet your needs and preferred style.
102
-
103
112
  ```ruby
104
113
  run OpenapiFirst::Responder, spec: OpenapiFirst.load('./openapi/openapi.yaml')
105
114
  ```
106
115
 
116
+ ### Options
107
117
  | Name | Description
108
118
  |:---|---|
109
- |`spec:`| The spec loaded via `OpenapiFirst.load` |
110
- | `namespace:` | A class or module where to find the handler method. |
119
+ | `namespace:` | Optional. A class or module where to find the handler method. |
120
+ | `resolver:` | Optional. An object that responds to `#call(operation)` and returns a (handler)[#handler]. By default this is an instance of [DefaultOperationResolver](#OpenapiFirst::DefaultOperationResolver) |
121
+
122
+
123
+ ### OpenapiFirst::DefaultOperationResolver
124
+ This is the default way to look up a handler method for an operation. Handlers are always looked up in a namespace module that needs to be specified.
111
125
 
112
126
  It works like this:
113
127
 
@@ -165,7 +179,7 @@ The above will use the mentioned Rack middlewares to:
165
179
  - Map the request to a method call `Pets.find_pet` based on the `operationId` in the API description
166
180
  - Set the response content type according to your spec (here with the default status code `200`)
167
181
 
168
- ### Options and their defaults:
182
+ ### Options and defaults
169
183
 
170
184
  | Name | Possible values | Description | Default
171
185
  |:---|---|---|---|
@@ -174,6 +188,7 @@ The above will use the mentioned Rack middlewares to:
174
188
  | `response_validation:` | `true`, `false` | If set to true it raises an exception if the response is invalid. This is useful during testing. | `false`
175
189
  | `router_raise_error:` | `true`, `false` | If set to true it raises an exception (subclass of `OpenapiFirst::Error` when a request path/method is not specified. This is useful during testing. | `false`
176
190
  | `request_validation_raise_error:` | `true`, `false` | If set to true it raises an exception (subclass of `OpenapiFirst::Error` when a request is not valid. | `false`
191
+ | `resolver:` | | Option to customize finding the [handler](#handler) method for an operation. See [OpenapiFirst::Responder](#OpenapiFirst::Responder) for details.
177
192
 
178
193
 
179
194
  Handler functions (`find_pet`) are called with two arguments:
data/benchmarks/Gemfile CHANGED
@@ -6,7 +6,8 @@ gem 'benchmark-ips'
6
6
  gem 'benchmark-memory'
7
7
  gem 'committee'
8
8
  gem 'grape'
9
- gem 'hanami-router', '~> 2.0.0.alpha2'
9
+ gem 'hanami-api'
10
+ gem 'hanami-router', '~> 2.0.0.alpha3'
10
11
  gem 'multi_json'
11
12
  gem 'openapi_first', path: '../'
12
13
  gem 'sinatra'
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- openapi_first (0.12.5)
4
+ openapi_first (0.14.0)
5
5
  deep_merge (>= 1.2.1)
6
6
  hanami-router (~> 2.0.alpha3)
7
7
  hanami-utils (~> 2.0.alpha1)
8
- json_schemer (~> 0.2)
8
+ json_schemer (~> 0.2.16)
9
9
  multi_json (~> 1.14)
10
10
  oas_parser (~> 0.25.1)
11
11
  rack (~> 2.2)
@@ -13,76 +13,75 @@ PATH
13
13
  GEM
14
14
  remote: https://rubygems.org/
15
15
  specs:
16
- activesupport (6.0.3.2)
16
+ activesupport (6.1.4)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
- i18n (>= 0.7, < 2)
19
- minitest (~> 5.1)
20
- tzinfo (~> 1.1)
21
- zeitwerk (~> 2.2, >= 2.2.2)
22
- addressable (2.7.0)
18
+ i18n (>= 1.6, < 2)
19
+ minitest (>= 5.1)
20
+ tzinfo (~> 2.0)
21
+ zeitwerk (~> 2.3)
22
+ addressable (2.8.0)
23
23
  public_suffix (>= 2.0.2, < 5.0)
24
- benchmark-ips (2.8.2)
24
+ benchmark-ips (2.9.1)
25
25
  benchmark-memory (0.1.2)
26
26
  memory_profiler (~> 0.9)
27
27
  builder (3.2.4)
28
- committee (4.1.0)
28
+ committee (4.4.0)
29
29
  json_schema (~> 0.14, >= 0.14.3)
30
- openapi_parser (>= 0.11.1)
30
+ openapi_parser (>= 0.11.1, < 1.0)
31
31
  rack (>= 1.5)
32
- concurrent-ruby (1.1.6)
32
+ concurrent-ruby (1.1.9)
33
33
  deep_merge (1.2.1)
34
- dry-configurable (0.11.6)
34
+ dry-configurable (0.12.1)
35
35
  concurrent-ruby (~> 1.0)
36
- dry-core (~> 0.4, >= 0.4.7)
37
- dry-equalizer (~> 0.2)
38
- dry-container (0.7.2)
36
+ dry-core (~> 0.5, >= 0.5.0)
37
+ dry-container (0.8.0)
39
38
  concurrent-ruby (~> 1.0)
40
39
  dry-configurable (~> 0.1, >= 0.1.3)
41
- dry-core (0.4.9)
40
+ dry-core (0.7.1)
42
41
  concurrent-ruby (~> 1.0)
43
- dry-equalizer (0.3.0)
44
- dry-inflector (0.2.0)
45
- dry-logic (1.0.6)
42
+ dry-inflector (0.2.1)
43
+ dry-logic (1.2.0)
46
44
  concurrent-ruby (~> 1.0)
47
- dry-core (~> 0.2)
48
- dry-equalizer (~> 0.2)
49
- dry-types (1.4.0)
45
+ dry-core (~> 0.5, >= 0.5)
46
+ dry-transformer (0.1.1)
47
+ dry-types (1.5.1)
50
48
  concurrent-ruby (~> 1.0)
51
49
  dry-container (~> 0.3)
52
- dry-core (~> 0.4, >= 0.4.4)
53
- dry-equalizer (~> 0.3)
50
+ dry-core (~> 0.5, >= 0.5)
54
51
  dry-inflector (~> 0.1, >= 0.1.2)
55
52
  dry-logic (~> 1.0, >= 1.0.2)
56
- ecma-re-validator (0.2.1)
57
- regexp_parser (~> 1.2)
58
- grape (1.4.0)
53
+ ecma-re-validator (0.3.0)
54
+ regexp_parser (~> 2.0)
55
+ grape (1.5.3)
59
56
  activesupport
60
57
  builder
61
58
  dry-types (>= 1.1)
62
59
  mustermann-grape (~> 1.0.0)
63
60
  rack (>= 1.3.0)
64
61
  rack-accept
65
- hana (1.3.6)
66
- hanami-router (2.0.0.alpha3)
62
+ hana (1.3.7)
63
+ hanami-api (0.2.0)
64
+ hanami-router (~> 2.0.alpha)
65
+ hanami-router (2.0.0.alpha5)
67
66
  mustermann (~> 1.0)
68
67
  mustermann-contrib (~> 1.0)
69
68
  rack (~> 2.0)
70
- hanami-utils (2.0.0.alpha1)
69
+ hanami-utils (2.0.0.alpha2)
71
70
  concurrent-ruby (~> 1.0)
72
- transproc (~> 1.0)
71
+ dry-transformer (~> 0.1)
73
72
  hansi (0.2.0)
74
73
  hash-deep-merge (0.1.1)
75
- i18n (1.8.4)
74
+ i18n (1.8.10)
76
75
  concurrent-ruby (~> 1.0)
77
- json_schema (0.20.9)
78
- json_schemer (0.2.13)
79
- ecma-re-validator (~> 0.2)
76
+ json_schema (0.21.0)
77
+ json_schemer (0.2.18)
78
+ ecma-re-validator (~> 0.3)
80
79
  hana (~> 1.3)
81
- regexp_parser (~> 1.5)
80
+ regexp_parser (~> 2.0)
82
81
  uri_template (~> 0.7)
83
82
  memory_profiler (0.9.14)
84
- mini_portile2 (2.4.0)
85
- minitest (5.14.1)
83
+ mini_portile2 (2.6.1)
84
+ minitest (5.14.4)
86
85
  multi_json (1.15.0)
87
86
  mustermann (1.1.1)
88
87
  ruby2_keywords (~> 0.0.1)
@@ -91,9 +90,10 @@ GEM
91
90
  mustermann (= 1.1.1)
92
91
  mustermann-grape (1.0.1)
93
92
  mustermann (>= 1.0.0)
94
- nokogiri (1.10.10)
95
- mini_portile2 (~> 2.4.0)
96
- oas_parser (0.25.1)
93
+ nokogiri (1.12.2)
94
+ mini_portile2 (~> 2.6.1)
95
+ racc (~> 1.4)
96
+ oas_parser (0.25.4)
97
97
  activesupport (>= 4.0.0)
98
98
  addressable (~> 2.3)
99
99
  builder (~> 3.2.3)
@@ -101,31 +101,30 @@ GEM
101
101
  hash-deep-merge
102
102
  mustermann-contrib (~> 1.1.1)
103
103
  nokogiri
104
- openapi_parser (0.11.2)
105
- public_suffix (4.0.5)
104
+ openapi_parser (0.14.1)
105
+ public_suffix (4.0.6)
106
+ racc (1.5.2)
106
107
  rack (2.2.3)
107
108
  rack-accept (0.4.5)
108
109
  rack (>= 0.4)
109
- rack-protection (2.0.8.1)
110
+ rack-protection (2.1.0)
110
111
  rack
111
- regexp_parser (1.7.1)
112
- ruby2_keywords (0.0.2)
112
+ regexp_parser (2.1.1)
113
+ ruby2_keywords (0.0.5)
113
114
  seg (1.2.0)
114
- sinatra (2.0.8.1)
115
+ sinatra (2.1.0)
115
116
  mustermann (~> 1.0)
116
- rack (~> 2.0)
117
- rack-protection (= 2.0.8.1)
117
+ rack (~> 2.2)
118
+ rack-protection (= 2.1.0)
118
119
  tilt (~> 2.0)
119
- syro (3.2.0)
120
+ syro (3.2.1)
120
121
  rack (>= 1.6.0)
121
122
  seg
122
- thread_safe (0.3.6)
123
123
  tilt (2.0.10)
124
- transproc (1.1.1)
125
- tzinfo (1.2.7)
126
- thread_safe (~> 0.1)
124
+ tzinfo (2.0.4)
125
+ concurrent-ruby (~> 1.0)
127
126
  uri_template (0.7.0)
128
- zeitwerk (2.4.0)
127
+ zeitwerk (2.4.2)
129
128
 
130
129
  PLATFORMS
131
130
  ruby
@@ -135,11 +134,12 @@ DEPENDENCIES
135
134
  benchmark-memory
136
135
  committee
137
136
  grape
138
- hanami-router (~> 2.0.0.alpha2)
137
+ hanami-api
138
+ hanami-router (~> 2.0.0.alpha3)
139
139
  multi_json
140
140
  openapi_first!
141
141
  sinatra
142
142
  syro
143
143
 
144
144
  BUNDLED WITH
145
- 2.1.4
145
+ 2.2.3