json_skooma 0.2.6 → 0.2.7

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.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -2
  3. data/data/draft-2019-09/README.md +60 -0
  4. data/data/draft-2019-09/hyper-schema.json +26 -0
  5. data/data/draft-2019-09/links.json +91 -0
  6. data/data/draft-2019-09/meta/applicator.json +53 -0
  7. data/data/draft-2019-09/meta/content.json +14 -0
  8. data/data/draft-2019-09/meta/core.json +54 -0
  9. data/data/draft-2019-09/meta/format.json +11 -0
  10. data/data/draft-2019-09/meta/hyper-schema.json +26 -0
  11. data/data/draft-2019-09/meta/meta-data.json +34 -0
  12. data/data/draft-2019-09/meta/validation.json +95 -0
  13. data/data/draft-2019-09/output/hyper-schema.json +62 -0
  14. data/data/draft-2019-09/output/schema.json +86 -0
  15. data/data/draft-2019-09/output/verbose-example.json +130 -0
  16. data/data/draft-2019-09/schema.json +42 -0
  17. data/data/draft-2020-12/README.md +89 -0
  18. data/data/draft-2020-12/adr/README.md +15 -0
  19. data/data/draft-2020-12/archive/hyper-schema.json +28 -0
  20. data/data/draft-2020-12/archive/links.json +93 -0
  21. data/data/draft-2020-12/archive/meta/hyper-schema.json +30 -0
  22. data/data/draft-2020-12/hyper-schema.json +27 -0
  23. data/data/draft-2020-12/links.json +85 -0
  24. data/data/draft-2020-12/meta/applicator.json +45 -0
  25. data/data/draft-2020-12/meta/content.json +14 -0
  26. data/data/draft-2020-12/meta/core.json +48 -0
  27. data/data/draft-2020-12/meta/format-annotation.json +11 -0
  28. data/data/draft-2020-12/meta/format-assertion.json +11 -0
  29. data/data/draft-2020-12/meta/hyper-schema.json +26 -0
  30. data/data/draft-2020-12/meta/meta-data.json +34 -0
  31. data/data/draft-2020-12/meta/unevaluated.json +12 -0
  32. data/data/draft-2020-12/meta/validation.json +95 -0
  33. data/data/draft-2020-12/output/hyper-schema.json +62 -0
  34. data/data/draft-2020-12/output/schema.json +96 -0
  35. data/data/draft-2020-12/output/verbose-example.json +130 -0
  36. data/data/draft-2020-12/schema.json +58 -0
  37. data/lib/json_skooma/version.rb +1 -1
  38. metadata +35 -1
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "Format vocabulary meta-schema for annotation results",
7
+ "type": ["object", "boolean"],
8
+ "properties": {
9
+ "format": { "type": "string" }
10
+ }
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/format-assertion",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "Format vocabulary meta-schema for assertion results",
7
+ "type": ["object", "boolean"],
8
+ "properties": {
9
+ "format": { "type": "string" }
10
+ }
11
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/hyper-schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/hyper-schema",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "JSON Hyper-Schema Vocabulary Schema",
7
+ "type": ["object", "boolean"],
8
+ "properties": {
9
+ "base": {
10
+ "type": "string",
11
+ "format": "uri-template"
12
+ },
13
+ "links": {
14
+ "type": "array",
15
+ "items": {
16
+ "$ref": "https://json-schema.org/draft/2020-12/links"
17
+ }
18
+ }
19
+ },
20
+ "links": [
21
+ {
22
+ "rel": "self",
23
+ "href": "{+%24id}"
24
+ }
25
+ ]
26
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "Meta-data vocabulary meta-schema",
7
+
8
+ "type": ["object", "boolean"],
9
+ "properties": {
10
+ "title": {
11
+ "type": "string"
12
+ },
13
+ "description": {
14
+ "type": "string"
15
+ },
16
+ "default": true,
17
+ "deprecated": {
18
+ "type": "boolean",
19
+ "default": false
20
+ },
21
+ "readOnly": {
22
+ "type": "boolean",
23
+ "default": false
24
+ },
25
+ "writeOnly": {
26
+ "type": "boolean",
27
+ "default": false
28
+ },
29
+ "examples": {
30
+ "type": "array",
31
+ "items": true
32
+ }
33
+ }
34
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "Unevaluated applicator vocabulary meta-schema",
7
+ "type": ["object", "boolean"],
8
+ "properties": {
9
+ "unevaluatedItems": { "$dynamicRef": "#meta" },
10
+ "unevaluatedProperties": { "$dynamicRef": "#meta" }
11
+ }
12
+ }
@@ -0,0 +1,95 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/validation",
4
+ "$dynamicAnchor": "meta",
5
+
6
+ "title": "Validation vocabulary meta-schema",
7
+ "type": ["object", "boolean"],
8
+ "properties": {
9
+ "type": {
10
+ "anyOf": [
11
+ { "$ref": "#/$defs/simpleTypes" },
12
+ {
13
+ "type": "array",
14
+ "items": { "$ref": "#/$defs/simpleTypes" },
15
+ "minItems": 1,
16
+ "uniqueItems": true
17
+ }
18
+ ]
19
+ },
20
+ "const": true,
21
+ "enum": {
22
+ "type": "array",
23
+ "items": true
24
+ },
25
+ "multipleOf": {
26
+ "type": "number",
27
+ "exclusiveMinimum": 0
28
+ },
29
+ "maximum": {
30
+ "type": "number"
31
+ },
32
+ "exclusiveMaximum": {
33
+ "type": "number"
34
+ },
35
+ "minimum": {
36
+ "type": "number"
37
+ },
38
+ "exclusiveMinimum": {
39
+ "type": "number"
40
+ },
41
+ "maxLength": { "$ref": "#/$defs/nonNegativeInteger" },
42
+ "minLength": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
43
+ "pattern": {
44
+ "type": "string",
45
+ "format": "regex"
46
+ },
47
+ "maxItems": { "$ref": "#/$defs/nonNegativeInteger" },
48
+ "minItems": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
49
+ "uniqueItems": {
50
+ "type": "boolean",
51
+ "default": false
52
+ },
53
+ "maxContains": { "$ref": "#/$defs/nonNegativeInteger" },
54
+ "minContains": {
55
+ "$ref": "#/$defs/nonNegativeInteger",
56
+ "default": 1
57
+ },
58
+ "maxProperties": { "$ref": "#/$defs/nonNegativeInteger" },
59
+ "minProperties": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
60
+ "required": { "$ref": "#/$defs/stringArray" },
61
+ "dependentRequired": {
62
+ "type": "object",
63
+ "additionalProperties": {
64
+ "$ref": "#/$defs/stringArray"
65
+ }
66
+ }
67
+ },
68
+ "$defs": {
69
+ "nonNegativeInteger": {
70
+ "type": "integer",
71
+ "minimum": 0
72
+ },
73
+ "nonNegativeIntegerDefault0": {
74
+ "$ref": "#/$defs/nonNegativeInteger",
75
+ "default": 0
76
+ },
77
+ "simpleTypes": {
78
+ "enum": [
79
+ "array",
80
+ "boolean",
81
+ "integer",
82
+ "null",
83
+ "number",
84
+ "object",
85
+ "string"
86
+ ]
87
+ },
88
+ "stringArray": {
89
+ "type": "array",
90
+ "items": { "type": "string" },
91
+ "uniqueItems": true,
92
+ "default": []
93
+ }
94
+ }
95
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2019-09/schema",
3
+ "$id": "https://json-schema.org/draft/2019-09/output/hyper-schema",
4
+ "title": "JSON Hyper-Schema Output",
5
+ "type": "array",
6
+ "items": {
7
+ "allOf": [
8
+ {"$ref": "https://json-schema.org/draft/2019-09/links#/$defs/noRequiredFields" }
9
+ ],
10
+ "type": "object",
11
+ "required": [
12
+ "contextUri",
13
+ "contextPointer",
14
+ "rel",
15
+ "attachmentPointer"
16
+ ],
17
+ "if": { "required": [ "hrefSchema" ] },
18
+ "then": { "required": [ "hrefInputTemplates", "hrefPrepopulatedInput" ] },
19
+ "else": { "required": [ "targetUri" ] },
20
+ "properties": {
21
+ "contextUri": {
22
+ "$comment": "The fully resolved URI of the link context, including a fragment if it is possible to construct one for the given media type and instance",
23
+ "type": "string",
24
+ "format": "uri"
25
+ },
26
+ "contextPointer": {
27
+ "$comment": "The absolute JSON Pointer to the location in the instance that is the context of the link. If the context resource supports JSON Pointer fragments, this will the string form of the identical JSON Pointer",
28
+ "type": "string",
29
+ "format": "json-pointer"
30
+ },
31
+ "rel": {
32
+ "type": "string"
33
+ },
34
+ "targetUri": {
35
+ "$comment": "The fully resolved target URI",
36
+ "type": "string",
37
+ "format": "uri"
38
+ },
39
+ "hrefInputTemplates": {
40
+ "$comment": "The list of partially resolved URI Templates, starting with \"href\", followed by applicable \"base\" values from nearest to furthest.",
41
+ "type": "array",
42
+ "items": {
43
+ "type": "string",
44
+ "format": "uri-template"
45
+ }
46
+ },
47
+ "hrefPrepopulatedInput": {
48
+ "$comment": "The initial data set to be presented with the input form when URI Template input is accepted.",
49
+ "type": "object",
50
+ "propertyNames": {
51
+ "$comment": "These are all URI Template variable names, specifically the 'varname' production from RFC 6570, Section 2.3",
52
+ "pattern": "^(?:\\w|(?:%[a-f\\d]{2}))+(?:\\.(?:\\w|(?:%[a-f\\d]{2})))*$"
53
+ }
54
+ },
55
+ "attachmentPointer": {
56
+ "$comment": "The absolute JSON Pointer, in string form, of the position to which this resolved link applies",
57
+ "type": "string",
58
+ "format": "json-pointer"
59
+ }
60
+ }
61
+ }
62
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/output/schema",
4
+ "description": "A schema that validates the minimum requirements for validation output",
5
+
6
+ "anyOf": [
7
+ { "$ref": "#/$defs/flag" },
8
+ { "$ref": "#/$defs/basic" },
9
+ { "$ref": "#/$defs/detailed" },
10
+ { "$ref": "#/$defs/verbose" }
11
+ ],
12
+ "$defs": {
13
+ "outputUnit":{
14
+ "properties": {
15
+ "valid": { "type": "boolean" },
16
+ "keywordLocation": {
17
+ "type": "string",
18
+ "format": "json-pointer"
19
+ },
20
+ "absoluteKeywordLocation": {
21
+ "type": "string",
22
+ "format": "uri"
23
+ },
24
+ "instanceLocation": {
25
+ "type": "string",
26
+ "format": "json-pointer"
27
+ },
28
+ "error": {
29
+ "type": "string"
30
+ },
31
+ "errors": {
32
+ "$ref": "#/$defs/outputUnitArray"
33
+ },
34
+ "annotations": {
35
+ "$ref": "#/$defs/outputUnitArray"
36
+ }
37
+ },
38
+ "required": [ "valid", "keywordLocation", "instanceLocation" ],
39
+ "allOf": [
40
+ {
41
+ "if": {
42
+ "properties": {
43
+ "valid": { "const": false }
44
+ }
45
+ },
46
+ "then": {
47
+ "anyOf": [
48
+ {
49
+ "required": [ "error" ]
50
+ },
51
+ {
52
+ "required": [ "errors" ]
53
+ }
54
+ ]
55
+ }
56
+ },
57
+ {
58
+ "if": {
59
+ "anyOf": [
60
+ {
61
+ "properties": {
62
+ "keywordLocation": {
63
+ "pattern": "/\\$ref/"
64
+ }
65
+ }
66
+ },
67
+ {
68
+ "properties": {
69
+ "keywordLocation": {
70
+ "pattern": "/\\$dynamicRef/"
71
+ }
72
+ }
73
+ }
74
+ ]
75
+ },
76
+ "then": {
77
+ "required": [ "absoluteKeywordLocation" ]
78
+ }
79
+ }
80
+ ]
81
+ },
82
+ "outputUnitArray": {
83
+ "type": "array",
84
+ "items": { "$ref": "#/$defs/outputUnit" }
85
+ },
86
+ "flag": {
87
+ "properties": {
88
+ "valid": { "type": "boolean" }
89
+ },
90
+ "required": [ "valid" ]
91
+ },
92
+ "basic": { "$ref": "#/$defs/outputUnit" },
93
+ "detailed": { "$ref": "#/$defs/outputUnit" },
94
+ "verbose": { "$ref": "#/$defs/outputUnit" }
95
+ }
96
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "valid": false,
3
+ "keywordLocation": "",
4
+ "instanceLocation": "",
5
+ "errors": [
6
+ {
7
+ "valid": true,
8
+ "keywordLocation": "/$defs",
9
+ "instanceLocation": ""
10
+ },
11
+ {
12
+ "valid": true,
13
+ "keywordLocation": "/type",
14
+ "instanceLocation": ""
15
+ },
16
+ {
17
+ "valid": false,
18
+ "keywordLocation": "/items",
19
+ "instanceLocation": "",
20
+ "errors": [
21
+ {
22
+ "valid": true,
23
+ "keywordLocation": "/items/$ref",
24
+ "absoluteKeywordLocation":
25
+ "https://example.com/polygon#/items/$ref",
26
+ "instanceLocation": "/0",
27
+ "annotations": [
28
+ {
29
+ "valid": true,
30
+ "keywordLocation": "/items/$ref",
31
+ "absoluteKeywordLocation":
32
+ "https://example.com/polygon#/$defs/point",
33
+ "instanceLocation": "/0",
34
+ "annotations": [
35
+ {
36
+ "valid": true,
37
+ "keywordLocation": "/items/$ref/type",
38
+ "absoluteKeywordLocation":
39
+ "https://example.com/polygon#/$defs/point/type",
40
+ "instanceLocation": "/0"
41
+ },
42
+ {
43
+ "valid": true,
44
+ "keywordLocation": "/items/$ref/properties",
45
+ "absoluteKeywordLocation":
46
+ "https://example.com/polygon#/$defs/point/properties",
47
+ "instanceLocation": "/0"
48
+ },
49
+ {
50
+ "valid": true,
51
+ "keywordLocation": "/items/$ref/required",
52
+ "absoluteKeywordLocation":
53
+ "https://example.com/polygon#/$defs/point/required",
54
+ "instanceLocation": "/0"
55
+ },
56
+ {
57
+ "valid": true,
58
+ "keywordLocation": "/items/$ref/additionalProperties",
59
+ "absoluteKeywordLocation":
60
+ "https://example.com/polygon#/$defs/point/additionalProperties",
61
+ "instanceLocation": "/0"
62
+ }
63
+ ]
64
+ }
65
+ ]
66
+ },
67
+ {
68
+ "valid": false,
69
+ "keywordLocation": "/items/$ref",
70
+ "absoluteKeywordLocation":
71
+ "https://example.com/polygon#/items/$ref",
72
+ "instanceLocation": "/1",
73
+ "errors": [
74
+ {
75
+ "valid": false,
76
+ "keywordLocation": "/items/$ref",
77
+ "absoluteKeywordLocation":
78
+ "https://example.com/polygon#/$defs/point",
79
+ "instanceLocation": "/1",
80
+ "errors": [
81
+ {
82
+ "valid": true,
83
+ "keywordLocation": "/items/$ref/type",
84
+ "absoluteKeywordLocation":
85
+ "https://example.com/polygon#/$defs/point/type",
86
+ "instanceLocation": "/1"
87
+ },
88
+ {
89
+ "valid": true,
90
+ "keywordLocation": "/items/$ref/properties",
91
+ "absoluteKeywordLocation":
92
+ "https://example.com/polygon#/$defs/point/properties",
93
+ "instanceLocation": "/1"
94
+ },
95
+ {
96
+ "valid": false,
97
+ "keywordLocation": "/items/$ref/required",
98
+ "absoluteKeywordLocation":
99
+ "https://example.com/polygon#/$defs/point/required",
100
+ "instanceLocation": "/1"
101
+ },
102
+ {
103
+ "valid": false,
104
+ "keywordLocation": "/items/$ref/additionalProperties",
105
+ "absoluteKeywordLocation":
106
+ "https://example.com/polygon#/$defs/point/additionalProperties",
107
+ "instanceLocation": "/1",
108
+ "errors": [
109
+ {
110
+ "valid": false,
111
+ "keywordLocation": "/items/$ref/additionalProperties",
112
+ "absoluteKeywordLocation":
113
+ "https://example.com/polygon#/$defs/point/additionalProperties",
114
+ "instanceLocation": "/1/z"
115
+ }
116
+ ]
117
+ }
118
+ ]
119
+ }
120
+ ]
121
+ }
122
+ ]
123
+ },
124
+ {
125
+ "valid": false,
126
+ "keywordLocation": "/minItems",
127
+ "instanceLocation": ""
128
+ }
129
+ ]
130
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/schema",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/core": true,
6
+ "https://json-schema.org/draft/2020-12/vocab/applicator": true,
7
+ "https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
8
+ "https://json-schema.org/draft/2020-12/vocab/validation": true,
9
+ "https://json-schema.org/draft/2020-12/vocab/meta-data": true,
10
+ "https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
11
+ "https://json-schema.org/draft/2020-12/vocab/content": true
12
+ },
13
+ "$dynamicAnchor": "meta",
14
+
15
+ "title": "Core and Validation specifications meta-schema",
16
+ "allOf": [
17
+ {"$ref": "meta/core"},
18
+ {"$ref": "meta/applicator"},
19
+ {"$ref": "meta/unevaluated"},
20
+ {"$ref": "meta/validation"},
21
+ {"$ref": "meta/meta-data"},
22
+ {"$ref": "meta/format-annotation"},
23
+ {"$ref": "meta/content"}
24
+ ],
25
+ "type": ["object", "boolean"],
26
+ "$comment": "This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.",
27
+ "properties": {
28
+ "definitions": {
29
+ "$comment": "\"definitions\" has been replaced by \"$defs\".",
30
+ "type": "object",
31
+ "additionalProperties": { "$dynamicRef": "#meta" },
32
+ "deprecated": true,
33
+ "default": {}
34
+ },
35
+ "dependencies": {
36
+ "$comment": "\"dependencies\" has been split and replaced by \"dependentSchemas\" and \"dependentRequired\" in order to serve their differing semantics.",
37
+ "type": "object",
38
+ "additionalProperties": {
39
+ "anyOf": [
40
+ { "$dynamicRef": "#meta" },
41
+ { "$ref": "meta/validation#/$defs/stringArray" }
42
+ ]
43
+ },
44
+ "deprecated": true,
45
+ "default": {}
46
+ },
47
+ "$recursiveAnchor": {
48
+ "$comment": "\"$recursiveAnchor\" has been replaced by \"$dynamicAnchor\".",
49
+ "$ref": "meta/core#/$defs/anchorString",
50
+ "deprecated": true
51
+ },
52
+ "$recursiveRef": {
53
+ "$comment": "\"$recursiveRef\" has been replaced by \"$dynamicRef\".",
54
+ "$ref": "meta/core#/$defs/uriReferenceString",
55
+ "deprecated": true
56
+ }
57
+ }
58
+ }
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module JSONSkooma
4
- VERSION = "0.2.6"
4
+ VERSION = "0.2.7"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: json_skooma
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Svyatoslav Kryukov
@@ -89,6 +89,40 @@ files:
89
89
  - CHANGELOG.md
90
90
  - LICENSE.txt
91
91
  - README.md
92
+ - data/draft-2019-09/README.md
93
+ - data/draft-2019-09/hyper-schema.json
94
+ - data/draft-2019-09/links.json
95
+ - data/draft-2019-09/meta/applicator.json
96
+ - data/draft-2019-09/meta/content.json
97
+ - data/draft-2019-09/meta/core.json
98
+ - data/draft-2019-09/meta/format.json
99
+ - data/draft-2019-09/meta/hyper-schema.json
100
+ - data/draft-2019-09/meta/meta-data.json
101
+ - data/draft-2019-09/meta/validation.json
102
+ - data/draft-2019-09/output/hyper-schema.json
103
+ - data/draft-2019-09/output/schema.json
104
+ - data/draft-2019-09/output/verbose-example.json
105
+ - data/draft-2019-09/schema.json
106
+ - data/draft-2020-12/README.md
107
+ - data/draft-2020-12/adr/README.md
108
+ - data/draft-2020-12/archive/hyper-schema.json
109
+ - data/draft-2020-12/archive/links.json
110
+ - data/draft-2020-12/archive/meta/hyper-schema.json
111
+ - data/draft-2020-12/hyper-schema.json
112
+ - data/draft-2020-12/links.json
113
+ - data/draft-2020-12/meta/applicator.json
114
+ - data/draft-2020-12/meta/content.json
115
+ - data/draft-2020-12/meta/core.json
116
+ - data/draft-2020-12/meta/format-annotation.json
117
+ - data/draft-2020-12/meta/format-assertion.json
118
+ - data/draft-2020-12/meta/hyper-schema.json
119
+ - data/draft-2020-12/meta/meta-data.json
120
+ - data/draft-2020-12/meta/unevaluated.json
121
+ - data/draft-2020-12/meta/validation.json
122
+ - data/draft-2020-12/output/hyper-schema.json
123
+ - data/draft-2020-12/output/schema.json
124
+ - data/draft-2020-12/output/verbose-example.json
125
+ - data/draft-2020-12/schema.json
92
126
  - lib/json_skooma.rb
93
127
  - lib/json_skooma/dialects/draft201909.rb
94
128
  - lib/json_skooma/dialects/draft202012.rb