Skip to content

Commit 2f5325a

Browse files
authored
Merge pull request json-schema-org#206 from handrews/non-val
Reorganize non-validator implementations
2 parents 98167a4 + 5448164 commit 2f5325a

File tree

1 file changed

+84
-36
lines changed

1 file changed

+84
-36
lines changed

implementations.md

Lines changed: 84 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Validators
6060
{% endfor %}
6161
</ul>
6262

63-
### Benchmarks
63+
#### Benchmarks
6464

6565
Benchmarks that compare at least two implementations supporting draft-06+ may be listed here.
6666

@@ -108,35 +108,70 @@ Hyper-Schema
108108
{% endfor %}
109109
</ul>
110110

111+
#### API documentation
111112

112-
Schema generation
113+
- JavaScript
114+
- [@cloudflare/doca](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/doca) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), _draft-04, -06, -07, and Doca extensions_ (UI forthcoming)
115+
116+
#### Link Description Object utilities
117+
118+
- JavaScript
119+
- [@cloudflare/json-hyper-schema](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-hyper-schema) _draft-07, -06, -04_ (BSD-3-Clause)
120+
121+
122+
Schema generators
113123
-----------------
114124

115-
Generators that produce schemas that are compatible with draft-06+ (e.g. no boolean `exlusiveMaximum`/`exclusiveMinimum`, no `id`, no hardwired draft-04 `$schema`) may be listed here. Such tools need not necessarily be able to generate every keyword from recent drafts.
125+
Schema generators need not support generating every schema keyword.
126+
For schema generators, compatibility with a draft means that either:
127+
128+
* Schemas produced explicitly set the draft with `$schema`
129+
* Schemas produced lack `$schema` but are valid against the appropriate meta-schema
130+
131+
For example, the only incompatibilities between draft-04 and draft-06 involve `exclusiveMinimum`, `exclusiveMaximum`, and `id` vs `$id`. If a generator does not set `$schema` and does not ever emit those keywords, then it is compatible with draft-06 even if it was written with draft-04 in mind.
132+
133+
#### From code
116134

117135
- .NET
118136
- [Json.NET](https://www.newtonsoft.com/jsonschema) (AGPL-3.0) - generates schemas from .NET types
119137
- [NJsonSchema](http://NJsonSchema.org) - (Ms-PL) - generates schemas from .NET types, see issue [574](https://github.com/RSuter/NJsonSchema/issues/574) for draft-06+ support progress
120-
- Orderly
121-
- [Orderly](https://github.com/lloyd/orderly) (BSD-3-Clause)
122138
- PHP
123139
- [Liform](https://github.com/Limenius/liform) (MIT) - generates schemas from Symfony forms
124-
- Scala
125-
- [Schema Guru](https://github.com/snowplow/schema-guru) (Apache 2.0) - CLI util, Spark Job and Web UI for deriving JSON Schemas out of corpus of JSON instances; see issue [178](https://github.com/snowplow/schema-guru/issues/178) for progress towards draft-06+ support
126140
- TypeScript
127141
- [typescript-json-schema](https://github.com/YousefED/typescript-json-schema)
142+
143+
#### From data
144+
145+
- Scala
146+
- [Schema Guru](https://github.com/snowplow/schema-guru) (Apache 2.0) - CLI util, Spark Job and Web UI for deriving JSON Schemas out of corpus of JSON instances; see issue [178](https://github.com/snowplow/schema-guru/issues/178) for progress towards draft-06+ support
128147
- Online (web tool)
129148
- [jsonschema.net](http://www.jsonschema.net) - generates schemas from example data
130149
- [quicktype.io](https://app.quicktype.io/#l=schema) - infer JSON Schema from samples, and generate TypeScript, C++, go, Java, C#, Swift, etc. types from JSON Schema
131150

132-
Data parsing and code generation
133-
--------------------------------
151+
152+
Generators from schemas
153+
-----------------------
154+
155+
Tools that generate artifacts from schemas need not support every keyword,
156+
as not all keywords work well for generative use cases.
157+
158+
Generators are considered compatible with a draft if they support (or benignly
159+
ignore) the appropriate `$schema` value, and interpret the keywords that they
160+
do support according to that draft.
161+
162+
For example, if a generator that was originally written for draft-04 does not
163+
support `id`, `exclusiveMinimum`, or `exclusiveMaxium`, then as long as it does
164+
not require a draft-04 `$schema`, it is compatible with draft-06 since those
165+
are the only keywords that changed.
166+
167+
#### Code generation
134168

135169
- Golang
136170
- [jsonschema](https://github.com/qri-io/jsonschema)(MIT) - idiomatic go implementation with custom validator support, coding to and from json, rich error returns *supports Draft 7*
171+
- Online (web tool)
172+
- [quicktype.io](https://app.quicktype.io/#l=schema) - infer JSON Schema from samples, and generate TypeScript, C++, go, Java, C#, Swift, etc. types from JSON Schema
137173

138-
UI generation
139-
-------------
174+
#### Web UI generation
140175

141176
_TODO: Sort by draft support._
142177

@@ -157,8 +192,42 @@ Various levels of support for UI generation primarily from the validation vocabu
157192
- [React JSON Schema Form](https://github.com/mozilla-services/react-jsonschema-form) (Apache 2)
158193
- [React Schema Form](https://github.com/networknt/react-schema-form) (MIT)
159194

160-
Editors
161-
-------
195+
#### Data from schemas
196+
197+
_None currently support draft-06 or later._
198+
199+
Utilities
200+
---------
201+
202+
Draft compatibility for utilities is generally specific to the purpose of
203+
the utility, and decided on a case-by-case basis.
204+
205+
#### General processing
206+
207+
- JavaScript
208+
- [@cloudflare/json-schema-walker](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-walker) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), _draft-07, -06, -04, and Cloudflare's Doca extensions_ Walks schemas and runs pre- and post-walk callbacks. Can modify schemas in place. (BSD-3-Clause)
209+
210+
#### Schema to Schema
211+
212+
- JavaScript
213+
- [@cloudflare/json-schema-transform](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-transform) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), (BSD-3-Clause) Utilities using @cloudflare/json-schema-walker for transformations including `allOf` merging and example roll-up.
214+
- [json-schema-merge-allof](https://github.com/mokkabonna/json-schema-merge-allof) (MIT)
215+
- [json-schema-compare](https://github.com/mokkabonna/json-schema-compare) (MIT)
216+
- [JSON-Schema-Instantiator](https://github.com/tomarad/JSON-Schema-Instantiator) (MIT)
217+
218+
#### Schema draft migration
219+
220+
_None currently support draft-06 or later._
221+
222+
#### Format converters
223+
224+
- Orderly
225+
- [Orderly](https://github.com/lloyd/orderly) (BSD-3-Clause)
226+
- Webpack
227+
- [@cloudflare/json-schema-ref-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-ref-loader) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), (BSD-3-Clause) Webpack loader for dereference-able schemas in JSON, JSON5, YAML, or JavaScript
228+
- [@cloudflare/json-schema-apidoc-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-apidoc-loader) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), Back-end for [@cloudflare/doca](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/doca), _draft-04, -06, -07, and Doca extensions_
229+
230+
#### Editors
162231

163232
_TODO: Sort by draft support._
164233

@@ -173,29 +242,8 @@ _TODO: Sort by draft support._
173242
- [Eclipse IDE](https://www.eclipse.org/downloads/eclipse-packages) - *Rich JSON edition supporting schema for instantaneous validation and error reporting, completion, documentation.*
174243
- [WebStorm](https://www.jetbrains.com/webstorm/), [IntelliJ IDEA](https://www.jetbrains.com/idea/), and other [JetBrains IDEs](https://www.jetbrains.com/products.html?fromMenu#type=ide) - *Code completion, documentation, and validation for JSON files using JSON Schema*
175244

176-
Compatibility
177-
-------------
178245

179-
Do you know of a tool that converts any version of JSON Schema to draft-07 or later? If so, please open a PR!
180-
181-
Documentation generation
182-
------------------------
183-
184-
- JavaScript
185-
- [@cloudflare/json-schema-apidoc-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-apidoc-loader) Back-end for [@cloudflare/doca](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/doca), supporting draft-04, -06, -07, and Doca extensions (UI forthcoming)
186-
187-
Other
188-
-----
189-
190-
- JavaScript
191-
- [JSON Schema Tools](https://github.com/cloudflare/json-schema-tools) (BSD-3-Clause) Monorepo for various JSON Schema-related packages, including:
192-
- [@cloudflare/json-schema-walker](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-walker) (BSD-3-Clause) Walks schemas (draft-04, -06, 07, and Cloudflare's Doca extensions) and runs pre- and post-walk callbacks. Can modify schemas in place.
193-
- [@cloudflare/json-schema-transform](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-transform) (BSD-3-Clause) Utilities using @cloudflare/json-schema-walker for transformations including `allOf` merging and example roll-up.
194-
- [@cloudflare/json-schema-ref-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-ref-loader) (BSD-3-Clause) Webpack loader for dereference-able schemas in JSON, JSON5, YAML, or JavaScript
195-
- [@cloudflare/json-hyper-schema](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-hyper-schema) (BSD-3-Clause) Utilities for working with Link Description Objects
196-
- [json-schema-merge-allof](https://github.com/mokkabonna/json-schema-merge-allof) (MIT)
197-
- [json-schema-compare](https://github.com/mokkabonna/json-schema-compare) (MIT)
198-
- [JSON-Schema-Instantiator](https://github.com/tomarad/JSON-Schema-Instantiator) (MIT)
246+
Schema Repositories
247+
-------------------
199248

200-
### Schema Repositories
201249
- [SchemaStore.org](http://schemastore.org/json/) - validate against common JSON Schemas

0 commit comments

Comments
 (0)