Skip to content
This repository was archived by the owner on Nov 2, 2023. It is now read-only.

Commit 2506ebe

Browse files
committed
Schema for the impls data file, structured page
This does two things in preparation for showing more information on this page in a way that is easy to see when quickly skimming the list. It adds a schema (in yaml because it will get pulled in to the jekyll/liquid template in the future) which documents the current fields. It also makes the rendered form of the list more structured by giving each implementation a field list. I anticipate more fields as important information that is currently inconsistenlty reported in the notes gets pulled out, starting with the configuration compliance information in the next commit. This commit also fixes where the language-level notes were not being rendered correctly, and updates the draft list for ajv-cli because I happened to notice it was out of date. For hyper-schema, the updated layout is simpler because there is only one modern implementation anyway. The other was moved to obsolete following the similar recent moves of validators that have not followed through on draft-06 or newer support. The obsolete data files are supported by changing a handful of license values from arrays to strings, which display identically. Allowing arrays didn't seem worth the trouble since the modern file doesn't use them. I did not change the layout of the obsolete page because really we'd rather people not look at it at all. Also, one obsolete validator did not specify which draft it supported, but from the last modified date in the repo it must have been draft-03. At this point, I doubt it matters anyway.
1 parent bf7b5d9 commit 2506ebe

6 files changed

+184
-87
lines changed

_data/hyper-libraries-modern.yml

+1-7
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,5 @@
33
- name: mokkabonna/json-hyper-schema
44
url: "https://github.com/mokkabonna/json-hyper-schema"
55
license: MIT
6+
date-draft: []
67
draft: [7]
7-
- name: Python
8-
implementations:
9-
- name: Core API Hyper-Schema codec
10-
url: "https://github.com/core-api/python-jsonhyperschema-codec"
11-
notes: "Draft-06+ progress: issue [12](https://github.com/core-api/python-jsonhyperschema-codec/issues/12)"
12-
draft: [4]
13-
license: BSD-2-Clause

_data/hyper-libraries-obsolete.yml

+9
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,13 @@
33
- name: Jsonary
44
url: "http://jsonary.com/"
55
license: MIT
6+
date-draft: []
67
draft: [4]
8+
- name: Python
9+
implementations:
10+
- name: Core API Hyper-Schema codec
11+
url: "https://github.com/core-api/python-jsonhyperschema-codec"
12+
notes: "Draft-06+ progress: issue [12](https://github.com/core-api/python-jsonhyperschema-codec/issues/12)"
13+
date-draft: []
14+
draft: [4]
15+
license: BSD-2-Clause

_data/schema.yml

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
$schema: https://json-schema.org/draft/2020-12/schema
2+
$id: https://json-schema.org/implementations/schema
3+
type: array
4+
items:
5+
$ref: "#/$defs/language"
6+
$defs:
7+
language:
8+
description: |
9+
A group of implementations grouped by programming language or
10+
runtime environment.
11+
type: object
12+
unevaluatedProperties: false
13+
required: [name]
14+
oneOf:
15+
- required: [implementations]
16+
- required: [notes]
17+
properties:
18+
name:
19+
type: string
20+
anchor-name:
21+
type: string
22+
description: A name suitable for us as an HTML id.
23+
implementations:
24+
description: |
25+
The list of implementations for this language/environment,
26+
sorted with those supporting the most recent
27+
drafts/versions first.
28+
type: array
29+
items:
30+
$ref: "#/$defs/implementation"
31+
notes:
32+
type: [string, "null"]
33+
implementation:
34+
description: |
35+
An implementation and its associated information.
36+
type: object
37+
unevaluatedProperties: false
38+
required: [name, url]
39+
anyOf:
40+
- required: [draft]
41+
- required: [date-draft]
42+
properties:
43+
name:
44+
description: The human-friendly name of the implementation
45+
type: string
46+
url:
47+
description: |
48+
The URL of the implementation's repository or documentation
49+
type: string
50+
format: uri
51+
draft:
52+
description: The supported drafts (up through draft-07)
53+
type: array
54+
items:
55+
type: integer
56+
enum: [1, 2, 3, 4, 6, 7]
57+
date-draft:
58+
description: The supported drafts (2019-09+)
59+
type: array
60+
items:
61+
type: string
62+
enum: [2019-09, 2020-12]
63+
license:
64+
description: |
65+
The software license under which the implementation
66+
is available
67+
type: string
68+
notes:
69+
description: |
70+
Additional information. Overly promotional (or critical)
71+
wording should be avoided.
72+
type: string

_data/validator-libraries-modern.yml

+35-49
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# NOTE: See schema.yml in this directory for the structure of this file.
12
- name: .NET
23
anchor-name: dotnet
34
implementations:
@@ -17,36 +18,36 @@
1718
implementations:
1819
- name: f5-json-schema
1920
url: https://github.com/KayEss/json-schema
20-
date-draft:
21+
date-draft: []
2122
draft: [7]
2223
license: Boost Software License 1.0
2324
- name: JSON schema validator for JSON for Modern C++
2425
url: https://github.com/pboettch/json-schema-validator
25-
date-draft:
26+
date-draft: []
2627
draft: [7]
2728
license: MIT
2829
- name: Valijson
2930
url: https://github.com/tristanpenman/valijson
3031
notes: header-only library, works with many JSON parser implementations
31-
date-draft:
32+
date-draft: []
3233
draft: [7]
3334
license: BSD-2-Clause
3435
- name: jsoncons
3536
url: https://github.com/danielaparker/jsoncons/blob/master/doc/ref/jsonschema/jsonschema.md
3637
notes: Header-only library
37-
date-draft:
38+
date-draft: []
3839
draft: [7]
3940
license: Boost Software License 1.0
4041
- name: Clojure
4142
implementations:
4243
- name: jinx
4344
url: https://github.com/juxt/jinx
44-
date-draft:
45+
date-draft: []
4546
draft: [7]
4647
license: MIT
4748
- name: json-schema
4849
url: https://github.com/luposlip/json-schema
49-
date-draft:
50+
date-draft: []
5051
draft: [7]
5152
license: Apache License, Version 2.0
5253
- name: COM/ActiveX
@@ -67,7 +68,7 @@
6768
implementations:
6869
- name: JsonXema
6970
url: https://github.com/hrzndhrn/json_xema
70-
date-draft:
71+
date-draft: []
7172
draft: [7, 6, 4]
7273
license: MIT
7374
- name: Erlang
@@ -92,7 +93,7 @@
9293
notes: includes custom validator support, rich error returns
9394
- name: gojsonschema
9495
url: https://github.com/xeipuuv/gojsonschema
95-
date-draft:
96+
date-draft: []
9697
draft: [7, 6, 4]
9798
license: "Apache 2.0"
9899
- name: Java
@@ -106,7 +107,6 @@
106107
notes: includes custom keywords support, custom dialect support, asynchronous validation
107108
- name: jsonschemafriend
108109
url: https://github.com/jimblackler/jsonschemafriend
109-
notes:
110110
date-draft: [2020-12, 2019-09]
111111
draft: [7, 6, 4, 3]
112112
license: Apache License 2.0
@@ -124,14 +124,12 @@
124124
license: GNU Affero General Public License v3.0
125125
- name: everit-org/json-schema
126126
url: https://github.com/everit-org/json-schema
127-
notes:
128-
date-draft:
127+
date-draft: []
129128
draft: [7, 6, 4]
130129
license: Apache License 2.0
131130
- name: Justify
132131
url: https://github.com/leadpony/justify
133-
notes:
134-
date-draft:
132+
date-draft: []
135133
draft: [7, 6, 4]
136134
license: Apache License 2.0
137135
- name: JavaScript
@@ -157,26 +155,26 @@
157155
- name: JSON Schema Library
158156
url: https://github.com/sagold/json-schema-library
159157
notes: "Built for Node.js and browsers. Customizable json-validator and json-schema utilities for traversal, data generation and validation"
160-
date-draft:
158+
date-draft: []
161159
draft: [7, 6, 4]
162160
license: MIT
163161
- name: djv
164162
url: https://github.com/korzio/djv
165163
notes: "for Node.js and browsers"
166-
date-draft:
164+
date-draft: []
167165
draft: [6, 4]
168166
license: MIT
169167
- name: vue-vuelidate-jsonschema
170168
url: https://github.com/mokkabonna/vue-vuelidate-jsonschema
171-
date-draft:
169+
date-draft: []
172170
draft: [6]
173171
license: MIT
174172
- name: Kotlin
175173
implementations:
176174
- name: Medeia-validator
177175
url: https://github.com/worldturner/medeia-validator
178176
notes: streaming validator for Kotlin and Java clients; works with Jackson and Gson
179-
date-draft:
177+
date-draft: []
180178
draft: [7, 6, 4]
181179
license: Apache License 2.0
182180
- name: json-kotlin-schema
@@ -185,95 +183,85 @@
185183
Kotlin implementation of JSON Schema.
186184
(Currently supports most of Draft 7; see the README for details.
187185
Full compliance with Draft 7 and later drafts in progress.)
188-
date-draft:
186+
date-draft: []
189187
draft: [7]
190188
license: MIT
191189
- name: Perl
192190
implementations:
193191
- name: JSON::Schema::Modern
194192
url: https://github.com/karenetheridge/JSON-Schema-Modern
195-
notes:
196193
date-draft: [2019-09, 2020-12]
197194
draft: [7]
198195
license: "GNU General Public License, Version 1 + The Artistic License 1.0"
199196
- name: JSON::Schema::Tiny
200197
url: https://github.com/karenetheridge/JSON-Schema-Tiny
201-
notes:
202198
date-draft: [2019-09, 2020-12]
203199
draft: [7]
204200
license: "GNU General Public License, Version 1 + The Artistic License 1.0"
205201
- name: JSON::Validator
206202
url: https://github.com/mojolicious/json-validator
207-
notes:
208-
date-draft:
203+
date-draft: []
209204
draft: [7, 6, 4]
210205
license: "The Artistic License 2.0 (GPL Compatible)"
211206
- name: JSONSchema::Validator
212207
url: https://github.com/skbkontur/perl-jsonschema-validator
213-
notes:
214-
date-draft:
208+
date-draft: []
215209
draft: [7, 6, 4]
216210
license: MIT
217211
- name: PHP
218212
implementations:
219213
- name: Opis Json Schema
220214
url: https://github.com/opis/json-schema
221-
notes:
222-
date-draft:
215+
date-draft: []
223216
draft: [7, 6]
224217
license: "Apache License 2.0"
225218
- name: Swaggest Json Schema
226219
url: https://github.com/swaggest/php-json-schema
227-
notes:
228-
date-draft:
220+
date-draft: []
229221
draft: [7, 6, 4]
230222
license: "MIT"
231223
- name: Python
232224
implementations:
233225
- name: jschon
234226
url: https://github.com/marksparkza/jschon
235-
notes:
236227
date-draft: [2019-09, 2020-12]
237-
draft:
228+
draft: []
238229
license: MIT
239230
- name: jsonschema
240231
url: https://github.com/Julian/jsonschema
241-
notes:
242232
date-draft: [2019-09, 2020-12]
243233
draft: [7, 6, 4, 3]
244234
license: "MIT"
245235
- name: fastjsonschema
246236
url: https://github.com/horejsek/python-fastjsonschema
247237
notes: Great performance thanks to code generation.
248-
date-draft:
238+
date-draft: []
249239
draft: [7, 6, 4]
250240
license: BSD-3-Clause
251241
- name: jsonschema-rs
252242
url: https://github.com/Stranger6667/jsonschema-rs/tree/master/bindings/python
253243
notes: Python bindings to Rust's jsonschema crate
254-
date-draft:
244+
date-draft: []
255245
draft: [7, 6, 4]
256246
license: MIT
257247
- name: Ruby
258248
implementations:
259249
- name: JSONSchemer
260250
url: https://github.com/davishmcclurg/json_schemer
261-
notes:
262-
date-draft:
251+
date-draft: []
263252
draft: [7, 6, 4]
264253
license: MIT
265254
- name: JSI
266255
url: https://rubydoc.info/gems/jsi
267-
notes:
268-
date-draft:
256+
date-draft: []
269257
draft: [7, 6, 4]
270258
license: AGPL-3.0
271259
- name: Rust
272260
implementations:
273261
- name: jsonschema-rs
274262
url: https://github.com/Stranger6667/jsonschema-rs
275263
notes: Fast due to compiling schema into a validation tree
276-
date-draft:
264+
date-draft: []
277265
draft: [7, 6, 4]
278266
license: MIT
279267
- name: Scala
@@ -282,22 +270,20 @@
282270
url: https://github.com/reactivecore/rc-circe-json-schema
283271
notes: Based on Circe-Library -Early state and API may not be stable. Not yet produciton ready.
284272
date-draft: [2020-12, 2019-09]
285-
draft:
273+
draft: []
286274
license: Apache License, Version 2.0
287275
- name: Objective-C
288276
implementations:
289277
- name: DSJSONSchemaValidation
290278
url: https://github.com/dashevo/JSONSchemaValidation
291-
notes:
292-
date-draft:
279+
date-draft: []
293280
draft: [7, 6, 4]
294281
license: MIT
295282
- name: Lua/LuaJIT
296283
implementations:
297284
- name: lua-resty-jsonschema
298285
url: https://github.com/iresty/lua-resty-jsonschema
299-
notes:
300-
date-draft:
286+
date-draft: []
301287
draft: [7, 6, 4]
302288
license: MIT
303289
- name: Web (Online)
@@ -315,7 +301,7 @@
315301
- name: jschon.dev
316302
url: https://jschon.dev/
317303
date-draft: [2020-12, 2019-09]
318-
draft:
304+
draft: []
319305
- name: JSON Schema Validator
320306
url: https://www.jsonschemavalidator.net/
321307
date-draft: [2019-09]
@@ -327,11 +313,11 @@
327313
notes: Powered by ajv; client-side validation
328314
- name: JSON Schema Lint
329315
url: http://jsonschemalint.com/
330-
date-draft:
316+
date-draft: []
331317
draft: [7, 6, 4, 3, 2, 1]
332318
- name: ExtendsClass's JSON Schema Validator
333319
url: https://extendsclass.com/json-schema-validator.html
334-
date-draft:
320+
date-draft: []
335321
draft: [7]
336322
- name: Command Line
337323
implementations:
@@ -344,17 +330,17 @@
344330
- name: ajv-cli
345331
license: MIT
346332
url: 'https://www.npmjs.com/package/ajv-cli'
347-
date-draft:
333+
date-draft: [2020-12, 2019-09]
348334
draft: [7, 6, 4]
349335
- name: yajsv
350336
license: MIT
351337
url: 'https://github.com/neilpa/yajsv'
352-
date-draft:
338+
date-draft: []
353339
draft: [7, 6, 4]
354340
notes: wraps [xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema)
355341
- name: Polyglottal JSON Schema Validator
356342
license: MIT
357343
url: 'https://www.npmjs.com/package/pajv'
358-
date-draft:
344+
date-draft: []
359345
draft: [6, 4]
360346
notes: can be used with YAML and many other formats besides JSON

0 commit comments

Comments
 (0)