jsi-dev 0.0.8 → 0.0.9

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 (148) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +3 -4
  3. data/CHANGELOG.md +19 -0
  4. data/LICENSE.md +2 -3
  5. data/README.md +87 -43
  6. data/docs/{glossary.md → Glossary.md} +84 -52
  7. data/jsi.gemspec +1 -1
  8. data/lib/jsi/base/mutability.rb +48 -0
  9. data/lib/jsi/base/node.rb +66 -52
  10. data/lib/jsi/base.rb +592 -176
  11. data/lib/jsi/jsi_coder.rb +4 -2
  12. data/lib/jsi/metaschema_node/bootstrap_schema.rb +118 -59
  13. data/lib/jsi/metaschema_node.rb +244 -154
  14. data/lib/jsi/ptr.rb +45 -17
  15. data/lib/jsi/ref.rb +197 -0
  16. data/lib/jsi/registry.rb +311 -0
  17. data/lib/jsi/schema/cxt/child_application.rb +35 -0
  18. data/lib/jsi/schema/cxt/inplace_application.rb +37 -0
  19. data/lib/jsi/schema/cxt.rb +80 -0
  20. data/lib/jsi/schema/dialect.rb +137 -0
  21. data/lib/jsi/schema/draft04.rb +113 -5
  22. data/lib/jsi/schema/draft06.rb +123 -5
  23. data/lib/jsi/schema/draft07.rb +157 -5
  24. data/lib/jsi/schema/draft202012.rb +303 -0
  25. data/lib/jsi/schema/dynamic_anchor_map.rb +63 -0
  26. data/lib/jsi/schema/element.rb +69 -0
  27. data/lib/jsi/schema/elements/anchor.rb +13 -0
  28. data/lib/jsi/schema/elements/array_validation.rb +82 -0
  29. data/lib/jsi/schema/elements/comment.rb +10 -0
  30. data/lib/jsi/schema/{validation → elements}/const.rb +11 -7
  31. data/lib/jsi/schema/elements/contains.rb +59 -0
  32. data/lib/jsi/schema/elements/contains_minmax.rb +91 -0
  33. data/lib/jsi/schema/elements/content_encoding.rb +10 -0
  34. data/lib/jsi/schema/elements/content_media_type.rb +10 -0
  35. data/lib/jsi/schema/elements/content_schema.rb +16 -0
  36. data/lib/jsi/schema/elements/default.rb +11 -0
  37. data/lib/jsi/schema/elements/definitions.rb +19 -0
  38. data/lib/jsi/schema/elements/dependencies.rb +99 -0
  39. data/lib/jsi/schema/elements/dependent_required.rb +49 -0
  40. data/lib/jsi/schema/elements/dependent_schemas.rb +69 -0
  41. data/lib/jsi/schema/elements/dynamic_ref.rb +69 -0
  42. data/lib/jsi/schema/elements/enum.rb +26 -0
  43. data/lib/jsi/schema/elements/examples.rb +10 -0
  44. data/lib/jsi/schema/elements/format.rb +10 -0
  45. data/lib/jsi/schema/elements/id.rb +30 -0
  46. data/lib/jsi/schema/elements/if_then_else.rb +82 -0
  47. data/lib/jsi/schema/elements/info_bool.rb +10 -0
  48. data/lib/jsi/schema/elements/info_string.rb +10 -0
  49. data/lib/jsi/schema/elements/items.rb +93 -0
  50. data/lib/jsi/schema/elements/items_prefixed.rb +96 -0
  51. data/lib/jsi/schema/elements/not.rb +31 -0
  52. data/lib/jsi/schema/elements/numeric.rb +137 -0
  53. data/lib/jsi/schema/elements/numeric_draft04.rb +77 -0
  54. data/lib/jsi/schema/elements/object_validation.rb +55 -0
  55. data/lib/jsi/schema/elements/pattern.rb +35 -0
  56. data/lib/jsi/schema/elements/properties.rb +145 -0
  57. data/lib/jsi/schema/elements/property_names.rb +48 -0
  58. data/lib/jsi/schema/elements/ref.rb +62 -0
  59. data/lib/jsi/schema/elements/required.rb +34 -0
  60. data/lib/jsi/schema/elements/self.rb +24 -0
  61. data/lib/jsi/schema/elements/some_of.rb +180 -0
  62. data/lib/jsi/schema/elements/string_validation.rb +57 -0
  63. data/lib/jsi/schema/elements/type.rb +43 -0
  64. data/lib/jsi/schema/elements/unevaluated_items.rb +54 -0
  65. data/lib/jsi/schema/elements/unevaluated_properties.rb +54 -0
  66. data/lib/jsi/schema/elements/xschema.rb +10 -0
  67. data/lib/jsi/schema/elements/xvocabulary.rb +10 -0
  68. data/lib/jsi/schema/elements.rb +101 -0
  69. data/lib/jsi/schema/issue.rb +3 -4
  70. data/lib/jsi/schema/schema_ancestor_node.rb +105 -52
  71. data/lib/jsi/schema/vocabulary.rb +36 -0
  72. data/lib/jsi/schema.rb +598 -383
  73. data/lib/jsi/schema_classes.rb +195 -141
  74. data/lib/jsi/schema_set.rb +85 -128
  75. data/lib/jsi/set.rb +23 -0
  76. data/lib/jsi/simple_wrap.rb +14 -17
  77. data/lib/jsi/struct.rb +57 -0
  78. data/lib/jsi/uri.rb +40 -0
  79. data/lib/jsi/util/private/memo_map.rb +9 -13
  80. data/lib/jsi/util/private.rb +59 -31
  81. data/lib/jsi/util/typelike.rb +19 -60
  82. data/lib/jsi/util.rb +53 -34
  83. data/lib/jsi/validation/error.rb +45 -2
  84. data/lib/jsi/validation/result.rb +121 -90
  85. data/lib/jsi/validation.rb +1 -6
  86. data/lib/jsi/version.rb +1 -1
  87. data/lib/jsi.rb +170 -36
  88. data/lib/schemas/json-schema.org/draft/2020-12/schema.rb +62 -0
  89. data/lib/schemas/json-schema.org/draft-04/schema.rb +60 -109
  90. data/lib/schemas/json-schema.org/draft-06/schema.rb +53 -108
  91. data/lib/schemas/json-schema.org/draft-07/schema.rb +63 -127
  92. data/readme.rb +4 -4
  93. data/{resources}/schemas/2020-12_strict.json +19 -0
  94. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/applicator.json +48 -0
  95. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/content.json +17 -0
  96. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/core.json +51 -0
  97. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/format-annotation.json +14 -0
  98. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/format-assertion.json +14 -0
  99. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/meta-data.json +37 -0
  100. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/unevaluated.json +15 -0
  101. data/{resources}/schemas/json-schema.org/draft/2020-12/meta/validation.json +98 -0
  102. data/{resources}/schemas/json-schema.org/draft/2020-12/schema.json +58 -0
  103. metadata +73 -52
  104. data/lib/jsi/metaschema.rb +0 -6
  105. data/lib/jsi/schema/application/child_application/contains.rb +0 -25
  106. data/lib/jsi/schema/application/child_application/draft04.rb +0 -21
  107. data/lib/jsi/schema/application/child_application/draft06.rb +0 -28
  108. data/lib/jsi/schema/application/child_application/draft07.rb +0 -28
  109. data/lib/jsi/schema/application/child_application/items.rb +0 -18
  110. data/lib/jsi/schema/application/child_application/properties.rb +0 -25
  111. data/lib/jsi/schema/application/child_application.rb +0 -13
  112. data/lib/jsi/schema/application/draft04.rb +0 -8
  113. data/lib/jsi/schema/application/draft06.rb +0 -8
  114. data/lib/jsi/schema/application/draft07.rb +0 -8
  115. data/lib/jsi/schema/application/inplace_application/dependencies.rb +0 -28
  116. data/lib/jsi/schema/application/inplace_application/draft04.rb +0 -25
  117. data/lib/jsi/schema/application/inplace_application/draft06.rb +0 -26
  118. data/lib/jsi/schema/application/inplace_application/draft07.rb +0 -32
  119. data/lib/jsi/schema/application/inplace_application/ifthenelse.rb +0 -20
  120. data/lib/jsi/schema/application/inplace_application/ref.rb +0 -18
  121. data/lib/jsi/schema/application/inplace_application/someof.rb +0 -44
  122. data/lib/jsi/schema/application/inplace_application.rb +0 -14
  123. data/lib/jsi/schema/application.rb +0 -12
  124. data/lib/jsi/schema/ref.rb +0 -183
  125. data/lib/jsi/schema/validation/array.rb +0 -69
  126. data/lib/jsi/schema/validation/contains.rb +0 -25
  127. data/lib/jsi/schema/validation/dependencies.rb +0 -49
  128. data/lib/jsi/schema/validation/draft04/minmax.rb +0 -91
  129. data/lib/jsi/schema/validation/draft04.rb +0 -110
  130. data/lib/jsi/schema/validation/draft06.rb +0 -120
  131. data/lib/jsi/schema/validation/draft07.rb +0 -157
  132. data/lib/jsi/schema/validation/enum.rb +0 -25
  133. data/lib/jsi/schema/validation/ifthenelse.rb +0 -46
  134. data/lib/jsi/schema/validation/items.rb +0 -54
  135. data/lib/jsi/schema/validation/not.rb +0 -20
  136. data/lib/jsi/schema/validation/numeric.rb +0 -121
  137. data/lib/jsi/schema/validation/object.rb +0 -45
  138. data/lib/jsi/schema/validation/pattern.rb +0 -34
  139. data/lib/jsi/schema/validation/properties.rb +0 -101
  140. data/lib/jsi/schema/validation/property_names.rb +0 -32
  141. data/lib/jsi/schema/validation/ref.rb +0 -40
  142. data/lib/jsi/schema/validation/required.rb +0 -27
  143. data/lib/jsi/schema/validation/someof.rb +0 -90
  144. data/lib/jsi/schema/validation/string.rb +0 -47
  145. data/lib/jsi/schema/validation/type.rb +0 -49
  146. data/lib/jsi/schema/validation.rb +0 -49
  147. data/lib/jsi/schema_registry.rb +0 -190
  148. data/lib/jsi/util/private/attr_struct.rb +0 -130
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/content",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/content": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Content vocabulary meta-schema",
10
+
11
+ "type": ["object", "boolean"],
12
+ "properties": {
13
+ "contentEncoding": { "type": "string" },
14
+ "contentMediaType": { "type": "string" },
15
+ "contentSchema": { "$dynamicRef": "#meta" }
16
+ }
17
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/core",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/core": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Core vocabulary meta-schema",
10
+ "type": ["object", "boolean"],
11
+ "properties": {
12
+ "$id": {
13
+ "$ref": "#/$defs/uriReferenceString",
14
+ "$comment": "Non-empty fragments not allowed.",
15
+ "pattern": "^[^#]*#?$"
16
+ },
17
+ "$schema": { "$ref": "#/$defs/uriString" },
18
+ "$ref": { "$ref": "#/$defs/uriReferenceString" },
19
+ "$anchor": { "$ref": "#/$defs/anchorString" },
20
+ "$dynamicRef": { "$ref": "#/$defs/uriReferenceString" },
21
+ "$dynamicAnchor": { "$ref": "#/$defs/anchorString" },
22
+ "$vocabulary": {
23
+ "type": "object",
24
+ "propertyNames": { "$ref": "#/$defs/uriString" },
25
+ "additionalProperties": {
26
+ "type": "boolean"
27
+ }
28
+ },
29
+ "$comment": {
30
+ "type": "string"
31
+ },
32
+ "$defs": {
33
+ "type": "object",
34
+ "additionalProperties": { "$dynamicRef": "#meta" }
35
+ }
36
+ },
37
+ "$defs": {
38
+ "anchorString": {
39
+ "type": "string",
40
+ "pattern": "^[A-Za-z_][-A-Za-z0-9._]*$"
41
+ },
42
+ "uriString": {
43
+ "type": "string",
44
+ "format": "uri"
45
+ },
46
+ "uriReferenceString": {
47
+ "type": "string",
48
+ "format": "uri-reference"
49
+ }
50
+ }
51
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/format-annotation",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/format-annotation": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Format vocabulary meta-schema for annotation results",
10
+ "type": ["object", "boolean"],
11
+ "properties": {
12
+ "format": { "type": "string" }
13
+ }
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/format-assertion",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/format-assertion": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Format vocabulary meta-schema for assertion results",
10
+ "type": ["object", "boolean"],
11
+ "properties": {
12
+ "format": { "type": "string" }
13
+ }
14
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/meta-data",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/meta-data": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Meta-data vocabulary meta-schema",
10
+
11
+ "type": ["object", "boolean"],
12
+ "properties": {
13
+ "title": {
14
+ "type": "string"
15
+ },
16
+ "description": {
17
+ "type": "string"
18
+ },
19
+ "default": true,
20
+ "deprecated": {
21
+ "type": "boolean",
22
+ "default": false
23
+ },
24
+ "readOnly": {
25
+ "type": "boolean",
26
+ "default": false
27
+ },
28
+ "writeOnly": {
29
+ "type": "boolean",
30
+ "default": false
31
+ },
32
+ "examples": {
33
+ "type": "array",
34
+ "items": true
35
+ }
36
+ }
37
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/unevaluated",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/unevaluated": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Unevaluated applicator vocabulary meta-schema",
10
+ "type": ["object", "boolean"],
11
+ "properties": {
12
+ "unevaluatedItems": { "$dynamicRef": "#meta" },
13
+ "unevaluatedProperties": { "$dynamicRef": "#meta" }
14
+ }
15
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://json-schema.org/draft/2020-12/meta/validation",
4
+ "$vocabulary": {
5
+ "https://json-schema.org/draft/2020-12/vocab/validation": true
6
+ },
7
+ "$dynamicAnchor": "meta",
8
+
9
+ "title": "Validation vocabulary meta-schema",
10
+ "type": ["object", "boolean"],
11
+ "properties": {
12
+ "type": {
13
+ "anyOf": [
14
+ { "$ref": "#/$defs/simpleTypes" },
15
+ {
16
+ "type": "array",
17
+ "items": { "$ref": "#/$defs/simpleTypes" },
18
+ "minItems": 1,
19
+ "uniqueItems": true
20
+ }
21
+ ]
22
+ },
23
+ "const": true,
24
+ "enum": {
25
+ "type": "array",
26
+ "items": true
27
+ },
28
+ "multipleOf": {
29
+ "type": "number",
30
+ "exclusiveMinimum": 0
31
+ },
32
+ "maximum": {
33
+ "type": "number"
34
+ },
35
+ "exclusiveMaximum": {
36
+ "type": "number"
37
+ },
38
+ "minimum": {
39
+ "type": "number"
40
+ },
41
+ "exclusiveMinimum": {
42
+ "type": "number"
43
+ },
44
+ "maxLength": { "$ref": "#/$defs/nonNegativeInteger" },
45
+ "minLength": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
46
+ "pattern": {
47
+ "type": "string",
48
+ "format": "regex"
49
+ },
50
+ "maxItems": { "$ref": "#/$defs/nonNegativeInteger" },
51
+ "minItems": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
52
+ "uniqueItems": {
53
+ "type": "boolean",
54
+ "default": false
55
+ },
56
+ "maxContains": { "$ref": "#/$defs/nonNegativeInteger" },
57
+ "minContains": {
58
+ "$ref": "#/$defs/nonNegativeInteger",
59
+ "default": 1
60
+ },
61
+ "maxProperties": { "$ref": "#/$defs/nonNegativeInteger" },
62
+ "minProperties": { "$ref": "#/$defs/nonNegativeIntegerDefault0" },
63
+ "required": { "$ref": "#/$defs/stringArray" },
64
+ "dependentRequired": {
65
+ "type": "object",
66
+ "additionalProperties": {
67
+ "$ref": "#/$defs/stringArray"
68
+ }
69
+ }
70
+ },
71
+ "$defs": {
72
+ "nonNegativeInteger": {
73
+ "type": "integer",
74
+ "minimum": 0
75
+ },
76
+ "nonNegativeIntegerDefault0": {
77
+ "$ref": "#/$defs/nonNegativeInteger",
78
+ "default": 0
79
+ },
80
+ "simpleTypes": {
81
+ "enum": [
82
+ "array",
83
+ "boolean",
84
+ "integer",
85
+ "null",
86
+ "number",
87
+ "object",
88
+ "string"
89
+ ]
90
+ },
91
+ "stringArray": {
92
+ "type": "array",
93
+ "items": { "type": "string" },
94
+ "uniqueItems": true,
95
+ "default": []
96
+ }
97
+ }
98
+ }
@@ -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
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsi-dev
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-23 00:00:00.000000000 Z
11
+ date: 2026-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -25,13 +25,13 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.3'
27
27
  - !ruby/object:Gem::Dependency
28
- name: maruku
28
+ name: bigdecimal
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
- type: :development
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
@@ -50,72 +50,82 @@ files:
50
50
  - CHANGELOG.md
51
51
  - LICENSE.md
52
52
  - README.md
53
- - docs/glossary.md
53
+ - docs/Glossary.md
54
54
  - jsi.gemspec
55
55
  - lib/jsi.rb
56
56
  - lib/jsi/base.rb
57
+ - lib/jsi/base/mutability.rb
57
58
  - lib/jsi/base/node.rb
58
59
  - lib/jsi/jsi_coder.rb
59
- - lib/jsi/metaschema.rb
60
60
  - lib/jsi/metaschema_node.rb
61
61
  - lib/jsi/metaschema_node/bootstrap_schema.rb
62
62
  - lib/jsi/ptr.rb
63
+ - lib/jsi/ref.rb
64
+ - lib/jsi/registry.rb
63
65
  - lib/jsi/schema.rb
64
- - lib/jsi/schema/application.rb
65
- - lib/jsi/schema/application/child_application.rb
66
- - lib/jsi/schema/application/child_application/contains.rb
67
- - lib/jsi/schema/application/child_application/draft04.rb
68
- - lib/jsi/schema/application/child_application/draft06.rb
69
- - lib/jsi/schema/application/child_application/draft07.rb
70
- - lib/jsi/schema/application/child_application/items.rb
71
- - lib/jsi/schema/application/child_application/properties.rb
72
- - lib/jsi/schema/application/draft04.rb
73
- - lib/jsi/schema/application/draft06.rb
74
- - lib/jsi/schema/application/draft07.rb
75
- - lib/jsi/schema/application/inplace_application.rb
76
- - lib/jsi/schema/application/inplace_application/dependencies.rb
77
- - lib/jsi/schema/application/inplace_application/draft04.rb
78
- - lib/jsi/schema/application/inplace_application/draft06.rb
79
- - lib/jsi/schema/application/inplace_application/draft07.rb
80
- - lib/jsi/schema/application/inplace_application/ifthenelse.rb
81
- - lib/jsi/schema/application/inplace_application/ref.rb
82
- - lib/jsi/schema/application/inplace_application/someof.rb
66
+ - lib/jsi/schema/cxt.rb
67
+ - lib/jsi/schema/cxt/child_application.rb
68
+ - lib/jsi/schema/cxt/inplace_application.rb
69
+ - lib/jsi/schema/dialect.rb
83
70
  - lib/jsi/schema/draft04.rb
84
71
  - lib/jsi/schema/draft06.rb
85
72
  - lib/jsi/schema/draft07.rb
73
+ - lib/jsi/schema/draft202012.rb
74
+ - lib/jsi/schema/dynamic_anchor_map.rb
75
+ - lib/jsi/schema/element.rb
76
+ - lib/jsi/schema/elements.rb
77
+ - lib/jsi/schema/elements/anchor.rb
78
+ - lib/jsi/schema/elements/array_validation.rb
79
+ - lib/jsi/schema/elements/comment.rb
80
+ - lib/jsi/schema/elements/const.rb
81
+ - lib/jsi/schema/elements/contains.rb
82
+ - lib/jsi/schema/elements/contains_minmax.rb
83
+ - lib/jsi/schema/elements/content_encoding.rb
84
+ - lib/jsi/schema/elements/content_media_type.rb
85
+ - lib/jsi/schema/elements/content_schema.rb
86
+ - lib/jsi/schema/elements/default.rb
87
+ - lib/jsi/schema/elements/definitions.rb
88
+ - lib/jsi/schema/elements/dependencies.rb
89
+ - lib/jsi/schema/elements/dependent_required.rb
90
+ - lib/jsi/schema/elements/dependent_schemas.rb
91
+ - lib/jsi/schema/elements/dynamic_ref.rb
92
+ - lib/jsi/schema/elements/enum.rb
93
+ - lib/jsi/schema/elements/examples.rb
94
+ - lib/jsi/schema/elements/format.rb
95
+ - lib/jsi/schema/elements/id.rb
96
+ - lib/jsi/schema/elements/if_then_else.rb
97
+ - lib/jsi/schema/elements/info_bool.rb
98
+ - lib/jsi/schema/elements/info_string.rb
99
+ - lib/jsi/schema/elements/items.rb
100
+ - lib/jsi/schema/elements/items_prefixed.rb
101
+ - lib/jsi/schema/elements/not.rb
102
+ - lib/jsi/schema/elements/numeric.rb
103
+ - lib/jsi/schema/elements/numeric_draft04.rb
104
+ - lib/jsi/schema/elements/object_validation.rb
105
+ - lib/jsi/schema/elements/pattern.rb
106
+ - lib/jsi/schema/elements/properties.rb
107
+ - lib/jsi/schema/elements/property_names.rb
108
+ - lib/jsi/schema/elements/ref.rb
109
+ - lib/jsi/schema/elements/required.rb
110
+ - lib/jsi/schema/elements/self.rb
111
+ - lib/jsi/schema/elements/some_of.rb
112
+ - lib/jsi/schema/elements/string_validation.rb
113
+ - lib/jsi/schema/elements/type.rb
114
+ - lib/jsi/schema/elements/unevaluated_items.rb
115
+ - lib/jsi/schema/elements/unevaluated_properties.rb
116
+ - lib/jsi/schema/elements/xschema.rb
117
+ - lib/jsi/schema/elements/xvocabulary.rb
86
118
  - lib/jsi/schema/issue.rb
87
- - lib/jsi/schema/ref.rb
88
119
  - lib/jsi/schema/schema_ancestor_node.rb
89
- - lib/jsi/schema/validation.rb
90
- - lib/jsi/schema/validation/array.rb
91
- - lib/jsi/schema/validation/const.rb
92
- - lib/jsi/schema/validation/contains.rb
93
- - lib/jsi/schema/validation/dependencies.rb
94
- - lib/jsi/schema/validation/draft04.rb
95
- - lib/jsi/schema/validation/draft04/minmax.rb
96
- - lib/jsi/schema/validation/draft06.rb
97
- - lib/jsi/schema/validation/draft07.rb
98
- - lib/jsi/schema/validation/enum.rb
99
- - lib/jsi/schema/validation/ifthenelse.rb
100
- - lib/jsi/schema/validation/items.rb
101
- - lib/jsi/schema/validation/not.rb
102
- - lib/jsi/schema/validation/numeric.rb
103
- - lib/jsi/schema/validation/object.rb
104
- - lib/jsi/schema/validation/pattern.rb
105
- - lib/jsi/schema/validation/properties.rb
106
- - lib/jsi/schema/validation/property_names.rb
107
- - lib/jsi/schema/validation/ref.rb
108
- - lib/jsi/schema/validation/required.rb
109
- - lib/jsi/schema/validation/someof.rb
110
- - lib/jsi/schema/validation/string.rb
111
- - lib/jsi/schema/validation/type.rb
120
+ - lib/jsi/schema/vocabulary.rb
112
121
  - lib/jsi/schema_classes.rb
113
- - lib/jsi/schema_registry.rb
114
122
  - lib/jsi/schema_set.rb
123
+ - lib/jsi/set.rb
115
124
  - lib/jsi/simple_wrap.rb
125
+ - lib/jsi/struct.rb
126
+ - lib/jsi/uri.rb
116
127
  - lib/jsi/util.rb
117
128
  - lib/jsi/util/private.rb
118
- - lib/jsi/util/private/attr_struct.rb
119
129
  - lib/jsi/util/private/memo_map.rb
120
130
  - lib/jsi/util/typelike.rb
121
131
  - lib/jsi/validation.rb
@@ -125,10 +135,21 @@ files:
125
135
  - lib/schemas/json-schema.org/draft-04/schema.rb
126
136
  - lib/schemas/json-schema.org/draft-06/schema.rb
127
137
  - lib/schemas/json-schema.org/draft-07/schema.rb
138
+ - lib/schemas/json-schema.org/draft/2020-12/schema.rb
128
139
  - readme.rb
140
+ - "{resources}/schemas/2020-12_strict.json"
129
141
  - "{resources}/schemas/json-schema.org/draft-04/schema.json"
130
142
  - "{resources}/schemas/json-schema.org/draft-06/schema.json"
131
143
  - "{resources}/schemas/json-schema.org/draft-07/schema.json"
144
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/applicator.json"
145
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/content.json"
146
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/core.json"
147
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/format-annotation.json"
148
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/format-assertion.json"
149
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/meta-data.json"
150
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/unevaluated.json"
151
+ - "{resources}/schemas/json-schema.org/draft/2020-12/meta/validation.json"
152
+ - "{resources}/schemas/json-schema.org/draft/2020-12/schema.json"
132
153
  homepage: https://github.com/notEthan/jsi
133
154
  licenses:
134
155
  - AGPL-3.0
@@ -148,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
169
  - !ruby/object:Gem::Version
149
170
  version: '0'
150
171
  requirements: []
151
- rubygems_version: 3.4.10
172
+ rubygems_version: 3.5.22
152
173
  signing_key:
153
174
  specification_version: 4
154
175
  summary: 'JSI: JSON Schema Instantiation'
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Metaschema
5
- end
6
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Contains
5
- # @private
6
- def internal_applicate_contains(idx, instance, &block)
7
- if keyword?('contains')
8
- contains_schema = subschema(['contains'])
9
-
10
- child_idx_valid = Hash.new { |h, i| h[i] = contains_schema.instance_valid?(instance[i]) }
11
-
12
- if child_idx_valid[idx]
13
- yield contains_schema
14
- else
15
- instance_valid = instance.each_index.any? { |i| child_idx_valid[i] }
16
-
17
- unless instance_valid
18
- # invalid application: if contains_schema does not validate against any child, it applies to every child
19
- yield contains_schema
20
- end
21
- end
22
- end
23
- end
24
- end
25
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Draft04
5
- include Schema::Application::ChildApplication::Items
6
- include Schema::Application::ChildApplication::Properties
7
-
8
- # @private
9
- def internal_child_applicate_keywords(token, instance, &block)
10
- if instance.respond_to?(:to_ary)
11
- # 5.3.1. additionalItems and items
12
- internal_applicate_items(token, &block)
13
- end
14
-
15
- if instance.respond_to?(:to_hash)
16
- # 5.4.4. additionalProperties, properties and patternProperties
17
- internal_applicate_properties(token, &block)
18
- end
19
- end
20
- end
21
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Draft06
5
- include Schema::Application::ChildApplication::Items
6
- include Schema::Application::ChildApplication::Contains
7
- include Schema::Application::ChildApplication::Properties
8
-
9
- # @private
10
- def internal_child_applicate_keywords(token, instance, &block)
11
- if instance.respond_to?(:to_ary)
12
- # json-schema-validation 6.9. items
13
- # json-schema-validation 6.10. additionalItems
14
- internal_applicate_items(token, &block)
15
-
16
- # json-schema-validation 6.14. contains
17
- internal_applicate_contains(token, instance, &block)
18
- end
19
-
20
- if instance.respond_to?(:to_hash)
21
- # json-schema-validation 6.18. properties
22
- # json-schema-validation 6.19. patternProperties
23
- # json-schema-validation 6.20. additionalProperties
24
- internal_applicate_properties(token, &block)
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Draft07
5
- include Schema::Application::ChildApplication::Items
6
- include Schema::Application::ChildApplication::Contains
7
- include Schema::Application::ChildApplication::Properties
8
-
9
- # @private
10
- def internal_child_applicate_keywords(token, instance, &block)
11
- if instance.respond_to?(:to_ary)
12
- # 6.4.1. items
13
- # 6.4.2. additionalItems
14
- internal_applicate_items(token, &block)
15
-
16
- # 6.4.6. contains
17
- internal_applicate_contains(token, instance, &block)
18
- end
19
-
20
- if instance.respond_to?(:to_hash)
21
- # 6.5.4. properties
22
- # 6.5.5. patternProperties
23
- # 6.5.6. additionalProperties
24
- internal_applicate_properties(token, &block)
25
- end
26
- end
27
- end
28
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Items
5
- # @private
6
- def internal_applicate_items(idx, &block)
7
- if keyword?('items') && schema_content['items'].respond_to?(:to_ary)
8
- if schema_content['items'].each_index.to_a.include?(idx)
9
- yield subschema(['items', idx])
10
- elsif keyword?('additionalItems')
11
- yield subschema(['additionalItems'])
12
- end
13
- elsif keyword?('items')
14
- yield subschema(['items'])
15
- end
16
- end
17
- end
18
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module JSI
4
- module Schema::Application::ChildApplication::Properties
5
- # @private
6
- def internal_applicate_properties(property_name, &block)
7
- apply_additional = true
8
- if keyword?('properties') && schema_content['properties'].respond_to?(:to_hash) && schema_content['properties'].key?(property_name)
9
- apply_additional = false
10
- yield subschema(['properties', property_name])
11
- end
12
- if keyword?('patternProperties') && schema_content['patternProperties'].respond_to?(:to_hash)
13
- schema_content['patternProperties'].each_key do |pattern|
14
- if pattern.respond_to?(:to_str) && property_name.to_s =~ Regexp.new(pattern) # TODO map pattern to ruby syntax
15
- apply_additional = false
16
- yield subschema(['patternProperties', pattern])
17
- end
18
- end
19
- end
20
- if apply_additional && keyword?('additionalProperties')
21
- yield subschema(['additionalProperties'])
22
- end
23
- end
24
- end
25
- end