-
Notifications
You must be signed in to change notification settings - Fork 325
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add annotation support refactor keywords to use annotations implement output formats #942
Conversation
Codecov ReportAttention: Patch coverage is
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files@@ Coverage Diff @@
## master #942 +/- ##
============================================
- Coverage 79.04% 78.85% -0.19%
- Complexity 1504 1687 +183
============================================
Files 143 157 +14
Lines 4915 5652 +737
Branches 932 1068 +136
============================================
+ Hits 3885 4457 +572
- Misses 670 794 +124
- Partials 360 401 +41 ☔ View full report in Codecov by Sentry. |
@justin-tay Nice work on zero required failures, and only one optional failure! :) Performance of 1.30.0 was looking amazing too: https://www.creekservice.org/json-schema-validation-comparison/performance Off the back of these performance and functional improvements.... creek-service/creek-kafka#491 |
Closes #940, closes #939, closes #936, closes #935, closes #889, closes #881, closes #857, closes #831, closes #286
This should not contain any breaking changes from 1.3.0
The document updates in this PR assume it will be released as 1.3.1
The following keywords were refactored to improve performance and meet the functional requirements.
In particular this converts the
unevaluatedItems
andunevaluatedProperties
validators to use annotations to perform the evaluation instead of the current mechanism which affects performance. This also refactors$recursiveRef
to not rely on that same mechanism.unevaluatedProperties
unevaluatedItems
properties
patternProperties
items
/additionalItems
prefixItems
/items
contains
$recursiveRef
This also fixes the issue where the
unevaluatedItems
keyword does not take into account thecontains
keyword when performing the evaluation.This also fixes cases where
anyOf
short-circuits to not short-circuit the evaluation if a adjacentunevaluatedProperties
orunevaluatedItems
keyword exists.This should fix most of the remaining functional and performance issues.
Functional
fail: r:0 (0.0%) o:1 (0.0%)
fail: r:0 (0.0%) o:0 (0.0%)
fail: r:0 (0.0%) o:0 (0.0%)
fail: r:0 (0.0%) o:0 (0.0%)
fail: r:0 (0.0%) o:0 (0.0%)
fail: r:0 (0.0%) o:1 (0.2%)
Performance
NetworkNT 1.3.1
Everit 1.14.1