@speclynx/apidom-ns-json-schema-draft-4 1.12.1

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 (93) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/LICENSE +202 -0
  3. package/LICENSES/AFL-3.0.txt +182 -0
  4. package/LICENSES/Apache-2.0.txt +202 -0
  5. package/LICENSES/BSD-3-Clause.txt +26 -0
  6. package/LICENSES/MIT.txt +9 -0
  7. package/NOTICE +65 -0
  8. package/README.md +189 -0
  9. package/dist/apidom-ns-json-schema-draft-4.browser.js +1 -0
  10. package/package.json +64 -0
  11. package/src/elements/JSONReference.cjs +29 -0
  12. package/src/elements/JSONReference.mjs +26 -0
  13. package/src/elements/JSONSchema.cjs +296 -0
  14. package/src/elements/JSONSchema.mjs +292 -0
  15. package/src/elements/LinkDescription.cjs +65 -0
  16. package/src/elements/LinkDescription.mjs +61 -0
  17. package/src/elements/Media.cjs +29 -0
  18. package/src/elements/Media.mjs +26 -0
  19. package/src/index.cjs +66 -0
  20. package/src/index.mjs +24 -0
  21. package/src/media-types.cjs +34 -0
  22. package/src/media-types.mjs +30 -0
  23. package/src/namespace.cjs +25 -0
  24. package/src/namespace.mjs +20 -0
  25. package/src/predicates.cjs +53 -0
  26. package/src/predicates.mjs +48 -0
  27. package/src/refractor/index.cjs +53 -0
  28. package/src/refractor/index.mjs +47 -0
  29. package/src/refractor/plugins/replace-empty-element.cjs +200 -0
  30. package/src/refractor/plugins/replace-empty-element.mjs +194 -0
  31. package/src/refractor/predicates.cjs +16 -0
  32. package/src/refractor/predicates.mjs +12 -0
  33. package/src/refractor/registration.cjs +19 -0
  34. package/src/refractor/registration.mjs +10 -0
  35. package/src/refractor/specification.cjs +182 -0
  36. package/src/refractor/specification.mjs +177 -0
  37. package/src/refractor/toolbox.cjs +21 -0
  38. package/src/refractor/toolbox.mjs +15 -0
  39. package/src/refractor/visitors/FallbackVisitor.cjs +25 -0
  40. package/src/refractor/visitors/FallbackVisitor.mjs +19 -0
  41. package/src/refractor/visitors/SpecificationVisitor.cjs +74 -0
  42. package/src/refractor/visitors/SpecificationVisitor.mjs +68 -0
  43. package/src/refractor/visitors/Visitor.cjs +31 -0
  44. package/src/refractor/visitors/Visitor.mjs +28 -0
  45. package/src/refractor/visitors/generics/AlternatingVisitor.cjs +42 -0
  46. package/src/refractor/visitors/generics/AlternatingVisitor.mjs +35 -0
  47. package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +53 -0
  48. package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +46 -0
  49. package/src/refractor/visitors/generics/MapVisitor.cjs +21 -0
  50. package/src/refractor/visitors/generics/MapVisitor.mjs +15 -0
  51. package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +53 -0
  52. package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +47 -0
  53. package/src/refractor/visitors/json-schema/AllOfVisitor.cjs +35 -0
  54. package/src/refractor/visitors/json-schema/AllOfVisitor.mjs +29 -0
  55. package/src/refractor/visitors/json-schema/AnyOfVisitor.cjs +35 -0
  56. package/src/refractor/visitors/json-schema/AnyOfVisitor.mjs +29 -0
  57. package/src/refractor/visitors/json-schema/DefinitionsVisitor.cjs +27 -0
  58. package/src/refractor/visitors/json-schema/DefinitionsVisitor.mjs +21 -0
  59. package/src/refractor/visitors/json-schema/DependenciesVisitor.cjs +27 -0
  60. package/src/refractor/visitors/json-schema/DependenciesVisitor.mjs +21 -0
  61. package/src/refractor/visitors/json-schema/EnumVisitor.cjs +17 -0
  62. package/src/refractor/visitors/json-schema/EnumVisitor.mjs +12 -0
  63. package/src/refractor/visitors/json-schema/ItemsVisitor.cjs +37 -0
  64. package/src/refractor/visitors/json-schema/ItemsVisitor.mjs +31 -0
  65. package/src/refractor/visitors/json-schema/JSONSchemaOrJSONReferenceVisitor.cjs +24 -0
  66. package/src/refractor/visitors/json-schema/JSONSchemaOrJSONReferenceVisitor.mjs +19 -0
  67. package/src/refractor/visitors/json-schema/LinksVisitor.cjs +33 -0
  68. package/src/refractor/visitors/json-schema/LinksVisitor.mjs +27 -0
  69. package/src/refractor/visitors/json-schema/OneOfVisitor.cjs +35 -0
  70. package/src/refractor/visitors/json-schema/OneOfVisitor.mjs +29 -0
  71. package/src/refractor/visitors/json-schema/ParentSchemaAwareVisitor.cjs +20 -0
  72. package/src/refractor/visitors/json-schema/ParentSchemaAwareVisitor.mjs +16 -0
  73. package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.cjs +27 -0
  74. package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.mjs +21 -0
  75. package/src/refractor/visitors/json-schema/PropertiesVisitor.cjs +27 -0
  76. package/src/refractor/visitors/json-schema/PropertiesVisitor.mjs +21 -0
  77. package/src/refractor/visitors/json-schema/RequiredVisitor.cjs +17 -0
  78. package/src/refractor/visitors/json-schema/RequiredVisitor.mjs +12 -0
  79. package/src/refractor/visitors/json-schema/TypeVisitor.cjs +22 -0
  80. package/src/refractor/visitors/json-schema/TypeVisitor.mjs +17 -0
  81. package/src/refractor/visitors/json-schema/index.cjs +64 -0
  82. package/src/refractor/visitors/json-schema/index.mjs +58 -0
  83. package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.cjs +17 -0
  84. package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.mjs +12 -0
  85. package/src/refractor/visitors/json-schema/json-reference/index.cjs +35 -0
  86. package/src/refractor/visitors/json-schema/json-reference/index.mjs +29 -0
  87. package/src/refractor/visitors/json-schema/link-description/index.cjs +25 -0
  88. package/src/refractor/visitors/json-schema/link-description/index.mjs +19 -0
  89. package/src/refractor/visitors/json-schema/media/index.cjs +25 -0
  90. package/src/refractor/visitors/json-schema/media/index.mjs +19 -0
  91. package/src/traversal/visitor.cjs +26 -0
  92. package/src/traversal/visitor.mjs +22 -0
  93. package/types/apidom-ns-json-schema-draft-4.d.ts +905 -0
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _apidomCore = require("@speclynx/apidom-core");
7
+ var _JSONSchema = _interopRequireDefault(require("../../elements/JSONSchema.cjs"));
8
+ var _LinkDescription = _interopRequireDefault(require("../../elements/LinkDescription.cjs"));
9
+ var _Media = _interopRequireDefault(require("../../elements/Media.cjs"));
10
+ var _visitor = require("../../traversal/visitor.cjs");
11
+ /**
12
+ * JSON Schema Draft 4 specification elements.
13
+ */
14
+
15
+ /**
16
+ * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
17
+ * with empty key, empty value, or both. If the value is not provided in YAML format,
18
+ * this plugin compensates for this missing value with the most appropriate semantic element type.
19
+ *
20
+ * https://yaml.org/spec/1.2.2/#72-empty-nodes
21
+ *
22
+ * @example
23
+ *
24
+ * ```yaml
25
+ * $schema: http://json-schema.org/draft-04/schema#
26
+ * items:
27
+ * ```
28
+ * Refracting result without this plugin:
29
+ *
30
+ * (JSONSchemaElement
31
+ * (MemberElement
32
+ * (StringElement)
33
+ * (StringElement))
34
+ * (MemberElement
35
+ * (StringElement)
36
+ * (StringElement))
37
+ *
38
+ * Refracting result with this plugin:
39
+ *
40
+ * (JSONSchemaElement
41
+ * (MemberElement
42
+ * (StringElement)
43
+ * (StringElement))
44
+ * (MemberElement
45
+ * (StringElement)
46
+ * (JSONSchemaElement))
47
+ */
48
+
49
+ const isEmptyElement = element => (0, _apidomCore.isStringElement)(element) && (0, _apidomCore.includesClasses)(['yaml-e-node', 'yaml-e-scalar'], element);
50
+ const schema = {
51
+ JSONSchemaDraft4Element: {
52
+ additionalItems(...args) {
53
+ return new _JSONSchema.default(...args);
54
+ },
55
+ items(...args) {
56
+ return new _JSONSchema.default(...args);
57
+ },
58
+ required(...args) {
59
+ const element = new _apidomCore.ArrayElement(...args);
60
+ element.classes.push('json-schema-required');
61
+ return element;
62
+ },
63
+ properties(...args) {
64
+ const element = new _apidomCore.ObjectElement(...args);
65
+ element.classes.push('json-schema-properties');
66
+ return element;
67
+ },
68
+ additionalProperties(...args) {
69
+ return new _JSONSchema.default(...args);
70
+ },
71
+ patternProperties(...args) {
72
+ const element = new _apidomCore.ObjectElement(...args);
73
+ element.classes.push('json-schema-patternProperties');
74
+ return element;
75
+ },
76
+ dependencies(...args) {
77
+ const element = new _apidomCore.ObjectElement(...args);
78
+ element.classes.push('json-schema-dependencies');
79
+ return element;
80
+ },
81
+ enum(...args) {
82
+ const element = new _apidomCore.ArrayElement(...args);
83
+ element.classes.push('json-schema-enum');
84
+ return element;
85
+ },
86
+ allOf(...args) {
87
+ const element = new _apidomCore.ArrayElement(...args);
88
+ element.classes.push('json-schema-allOf');
89
+ return element;
90
+ },
91
+ anyOf(...args) {
92
+ const element = new _apidomCore.ArrayElement(...args);
93
+ element.classes.push('json-schema-anyOf');
94
+ return element;
95
+ },
96
+ oneOf(...args) {
97
+ const element = new _apidomCore.ArrayElement(...args);
98
+ element.classes.push('json-schema-oneOf');
99
+ return element;
100
+ },
101
+ not(...args) {
102
+ return new _JSONSchema.default(...args);
103
+ },
104
+ definitions(...args) {
105
+ const element = new _apidomCore.ObjectElement(...args);
106
+ element.classes.push('json-schema-definitions');
107
+ return element;
108
+ },
109
+ links(...args) {
110
+ const element = new _apidomCore.ArrayElement(...args);
111
+ element.classes.push('json-schema-links');
112
+ return element;
113
+ },
114
+ media(...args) {
115
+ return new _Media.default(...args);
116
+ }
117
+ },
118
+ LinkDescriptionElement: {
119
+ targetSchema(...args) {
120
+ return new _JSONSchema.default(...args);
121
+ },
122
+ schema(...args) {
123
+ return new _JSONSchema.default(...args);
124
+ }
125
+ },
126
+ 'json-schema-properties': {
127
+ '[key: *]': function key(...args) {
128
+ return new _JSONSchema.default(...args);
129
+ }
130
+ },
131
+ 'json-schema-patternProperties': {
132
+ '[key: *]': function key(...args) {
133
+ return new _JSONSchema.default(...args);
134
+ }
135
+ },
136
+ 'json-schema-dependencies': {
137
+ '[key: *]': function key(...args) {
138
+ return new _JSONSchema.default(...args);
139
+ }
140
+ },
141
+ 'json-schema-allOf': {
142
+ '<*>': function asterisk(...args) {
143
+ return new _JSONSchema.default(...args);
144
+ }
145
+ },
146
+ 'json-schema-anyOf': {
147
+ '<*>': function asterisk(...args) {
148
+ return new _JSONSchema.default(...args);
149
+ }
150
+ },
151
+ 'json-schema-oneOf': {
152
+ '<*>': function asterisk(...args) {
153
+ return new _JSONSchema.default(...args);
154
+ }
155
+ },
156
+ 'json-schema-definitions': {
157
+ '[key: *]': function key(...args) {
158
+ return new _JSONSchema.default(...args);
159
+ }
160
+ },
161
+ 'json-schema-links': {
162
+ '<*>': function asterisk(...args) {
163
+ return new _LinkDescription.default(...args);
164
+ }
165
+ }
166
+ };
167
+ const findElementFactory = (ancestor, keyName) => {
168
+ const elementType = (0, _visitor.getNodeType)(ancestor); // @ts-ignore
169
+ const keyMapping = schema[elementType] || schema[(0, _apidomCore.toValue)(ancestor.classes.first)];
170
+ return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
171
+ };
172
+
173
+ /**
174
+ * @public
175
+ */
176
+ const plugin = () => () => ({
177
+ visitor: {
178
+ StringElement(element, key, parent, path, ancestors) {
179
+ if (!isEmptyElement(element)) return undefined;
180
+ const lineage = [...ancestors, parent].filter(_apidomCore.isElement);
181
+ const parentElement = lineage.at(-1);
182
+ let elementFactory;
183
+ let context;
184
+ if ((0, _apidomCore.isArrayElement)(parentElement)) {
185
+ context = element;
186
+ elementFactory = findElementFactory(parentElement, '<*>');
187
+ } else if ((0, _apidomCore.isMemberElement)(parentElement)) {
188
+ context = lineage.at(-2);
189
+ elementFactory = findElementFactory(context, (0, _apidomCore.toValue)(parentElement.key));
190
+ }
191
+
192
+ // no element factory found
193
+ if (typeof elementFactory !== 'function') return undefined;
194
+ return elementFactory.call({
195
+ context
196
+ }, undefined, (0, _apidomCore.cloneDeep)(element.meta), (0, _apidomCore.cloneDeep)(element.attributes));
197
+ }
198
+ }
199
+ });
200
+ var _default = exports.default = plugin;
@@ -0,0 +1,194 @@
1
+ import { ArrayElement, ObjectElement, isArrayElement, isElement, isMemberElement, isStringElement, includesClasses, cloneDeep, toValue } from '@speclynx/apidom-core';
2
+
3
+ /**
4
+ * JSON Schema Draft 4 specification elements.
5
+ */
6
+ import JSONSchemaElement from "../../elements/JSONSchema.mjs";
7
+ import LinkDescriptionElement from "../../elements/LinkDescription.mjs";
8
+ import MediaElement from "../../elements/Media.mjs";
9
+ import { getNodeType } from "../../traversal/visitor.mjs";
10
+ /**
11
+ * This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
12
+ * with empty key, empty value, or both. If the value is not provided in YAML format,
13
+ * this plugin compensates for this missing value with the most appropriate semantic element type.
14
+ *
15
+ * https://yaml.org/spec/1.2.2/#72-empty-nodes
16
+ *
17
+ * @example
18
+ *
19
+ * ```yaml
20
+ * $schema: http://json-schema.org/draft-04/schema#
21
+ * items:
22
+ * ```
23
+ * Refracting result without this plugin:
24
+ *
25
+ * (JSONSchemaElement
26
+ * (MemberElement
27
+ * (StringElement)
28
+ * (StringElement))
29
+ * (MemberElement
30
+ * (StringElement)
31
+ * (StringElement))
32
+ *
33
+ * Refracting result with this plugin:
34
+ *
35
+ * (JSONSchemaElement
36
+ * (MemberElement
37
+ * (StringElement)
38
+ * (StringElement))
39
+ * (MemberElement
40
+ * (StringElement)
41
+ * (JSONSchemaElement))
42
+ */
43
+ const isEmptyElement = element => isStringElement(element) && includesClasses(['yaml-e-node', 'yaml-e-scalar'], element);
44
+ const schema = {
45
+ JSONSchemaDraft4Element: {
46
+ additionalItems(...args) {
47
+ return new JSONSchemaElement(...args);
48
+ },
49
+ items(...args) {
50
+ return new JSONSchemaElement(...args);
51
+ },
52
+ required(...args) {
53
+ const element = new ArrayElement(...args);
54
+ element.classes.push('json-schema-required');
55
+ return element;
56
+ },
57
+ properties(...args) {
58
+ const element = new ObjectElement(...args);
59
+ element.classes.push('json-schema-properties');
60
+ return element;
61
+ },
62
+ additionalProperties(...args) {
63
+ return new JSONSchemaElement(...args);
64
+ },
65
+ patternProperties(...args) {
66
+ const element = new ObjectElement(...args);
67
+ element.classes.push('json-schema-patternProperties');
68
+ return element;
69
+ },
70
+ dependencies(...args) {
71
+ const element = new ObjectElement(...args);
72
+ element.classes.push('json-schema-dependencies');
73
+ return element;
74
+ },
75
+ enum(...args) {
76
+ const element = new ArrayElement(...args);
77
+ element.classes.push('json-schema-enum');
78
+ return element;
79
+ },
80
+ allOf(...args) {
81
+ const element = new ArrayElement(...args);
82
+ element.classes.push('json-schema-allOf');
83
+ return element;
84
+ },
85
+ anyOf(...args) {
86
+ const element = new ArrayElement(...args);
87
+ element.classes.push('json-schema-anyOf');
88
+ return element;
89
+ },
90
+ oneOf(...args) {
91
+ const element = new ArrayElement(...args);
92
+ element.classes.push('json-schema-oneOf');
93
+ return element;
94
+ },
95
+ not(...args) {
96
+ return new JSONSchemaElement(...args);
97
+ },
98
+ definitions(...args) {
99
+ const element = new ObjectElement(...args);
100
+ element.classes.push('json-schema-definitions');
101
+ return element;
102
+ },
103
+ links(...args) {
104
+ const element = new ArrayElement(...args);
105
+ element.classes.push('json-schema-links');
106
+ return element;
107
+ },
108
+ media(...args) {
109
+ return new MediaElement(...args);
110
+ }
111
+ },
112
+ LinkDescriptionElement: {
113
+ targetSchema(...args) {
114
+ return new JSONSchemaElement(...args);
115
+ },
116
+ schema(...args) {
117
+ return new JSONSchemaElement(...args);
118
+ }
119
+ },
120
+ 'json-schema-properties': {
121
+ '[key: *]': function key(...args) {
122
+ return new JSONSchemaElement(...args);
123
+ }
124
+ },
125
+ 'json-schema-patternProperties': {
126
+ '[key: *]': function key(...args) {
127
+ return new JSONSchemaElement(...args);
128
+ }
129
+ },
130
+ 'json-schema-dependencies': {
131
+ '[key: *]': function key(...args) {
132
+ return new JSONSchemaElement(...args);
133
+ }
134
+ },
135
+ 'json-schema-allOf': {
136
+ '<*>': function asterisk(...args) {
137
+ return new JSONSchemaElement(...args);
138
+ }
139
+ },
140
+ 'json-schema-anyOf': {
141
+ '<*>': function asterisk(...args) {
142
+ return new JSONSchemaElement(...args);
143
+ }
144
+ },
145
+ 'json-schema-oneOf': {
146
+ '<*>': function asterisk(...args) {
147
+ return new JSONSchemaElement(...args);
148
+ }
149
+ },
150
+ 'json-schema-definitions': {
151
+ '[key: *]': function key(...args) {
152
+ return new JSONSchemaElement(...args);
153
+ }
154
+ },
155
+ 'json-schema-links': {
156
+ '<*>': function asterisk(...args) {
157
+ return new LinkDescriptionElement(...args);
158
+ }
159
+ }
160
+ };
161
+ const findElementFactory = (ancestor, keyName) => {
162
+ const elementType = getNodeType(ancestor); // @ts-ignore
163
+ const keyMapping = schema[elementType] || schema[toValue(ancestor.classes.first)];
164
+ return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
165
+ };
166
+
167
+ /**
168
+ * @public
169
+ */
170
+ const plugin = () => () => ({
171
+ visitor: {
172
+ StringElement(element, key, parent, path, ancestors) {
173
+ if (!isEmptyElement(element)) return undefined;
174
+ const lineage = [...ancestors, parent].filter(isElement);
175
+ const parentElement = lineage.at(-1);
176
+ let elementFactory;
177
+ let context;
178
+ if (isArrayElement(parentElement)) {
179
+ context = element;
180
+ elementFactory = findElementFactory(parentElement, '<*>');
181
+ } else if (isMemberElement(parentElement)) {
182
+ context = lineage.at(-2);
183
+ elementFactory = findElementFactory(context, toValue(parentElement.key));
184
+ }
185
+
186
+ // no element factory found
187
+ if (typeof elementFactory !== 'function') return undefined;
188
+ return elementFactory.call({
189
+ context
190
+ }, undefined, cloneDeep(element.meta), cloneDeep(element.attributes));
191
+ }
192
+ }
193
+ });
194
+ export default plugin;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.isJSONReferenceLikeElement = void 0;
5
+ var _apidomCore = require("@speclynx/apidom-core");
6
+ /**
7
+ * @public
8
+ */
9
+
10
+ /**
11
+ * @public
12
+ */
13
+ const isJSONReferenceLikeElement = element => {
14
+ return (0, _apidomCore.isObjectElement)(element) && element.hasKey('$ref');
15
+ };
16
+ exports.isJSONReferenceLikeElement = isJSONReferenceLikeElement;
@@ -0,0 +1,12 @@
1
+ import { isObjectElement } from '@speclynx/apidom-core';
2
+
3
+ /**
4
+ * @public
5
+ */
6
+
7
+ /**
8
+ * @public
9
+ */
10
+ export const isJSONReferenceLikeElement = element => {
11
+ return isObjectElement(element) && element.hasKey('$ref');
12
+ };
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ var _JSONSchema = _interopRequireDefault(require("../elements/JSONSchema.cjs"));
6
+ exports.JSONSchemaElement = _JSONSchema.default;
7
+ var _JSONReference = _interopRequireDefault(require("../elements/JSONReference.cjs"));
8
+ exports.JSONReferenceElement = _JSONReference.default;
9
+ var _Media = _interopRequireDefault(require("../elements/Media.cjs"));
10
+ exports.MediaElement = _Media.default;
11
+ var _LinkDescription = _interopRequireDefault(require("../elements/LinkDescription.cjs"));
12
+ exports.LinkDescriptionElement = _LinkDescription.default;
13
+ var _index = require("./index.cjs");
14
+ // register refractors specific to element types
15
+
16
+ _JSONSchema.default.refract = (0, _index.createRefractor)(['visitors', 'document', 'objects', 'JSONSchema', '$visitor']);
17
+ _JSONReference.default.refract = (0, _index.createRefractor)(['visitors', 'document', 'objects', 'JSONReference', '$visitor']);
18
+ _Media.default.refract = (0, _index.createRefractor)(['visitors', 'document', 'objects', 'Media', '$visitor']);
19
+ _LinkDescription.default.refract = (0, _index.createRefractor)(['visitors', 'document', 'objects', 'LinkDescription', '$visitor']);
@@ -0,0 +1,10 @@
1
+ import JSONSchemaElement from "../elements/JSONSchema.mjs";
2
+ import JSONReferenceElement from "../elements/JSONReference.mjs";
3
+ import MediaElement from "../elements/Media.mjs";
4
+ import LinkDescriptionElement from "../elements/LinkDescription.mjs";
5
+ import { createRefractor } from "./index.mjs"; // register refractors specific to element types
6
+ JSONSchemaElement.refract = createRefractor(['visitors', 'document', 'objects', 'JSONSchema', '$visitor']);
7
+ JSONReferenceElement.refract = createRefractor(['visitors', 'document', 'objects', 'JSONReference', '$visitor']);
8
+ MediaElement.refract = createRefractor(['visitors', 'document', 'objects', 'Media', '$visitor']);
9
+ LinkDescriptionElement.refract = createRefractor(['visitors', 'document', 'objects', 'LinkDescription', '$visitor']);
10
+ export { JSONSchemaElement, JSONReferenceElement, MediaElement, LinkDescriptionElement };
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _FallbackVisitor = _interopRequireDefault(require("./visitors/FallbackVisitor.cjs"));
7
+ var _index = _interopRequireDefault(require("./visitors/json-schema/index.cjs"));
8
+ var _ItemsVisitor = _interopRequireDefault(require("./visitors/json-schema/ItemsVisitor.cjs"));
9
+ var _RequiredVisitor = _interopRequireDefault(require("./visitors/json-schema/RequiredVisitor.cjs"));
10
+ var _PropertiesVisitor = _interopRequireDefault(require("./visitors/json-schema/PropertiesVisitor.cjs"));
11
+ var _PatternPropertiesVisitor = _interopRequireDefault(require("./visitors/json-schema/PatternPropertiesVisitor.cjs"));
12
+ var _DependenciesVisitor = _interopRequireDefault(require("./visitors/json-schema/DependenciesVisitor.cjs"));
13
+ var _EnumVisitor = _interopRequireDefault(require("./visitors/json-schema/EnumVisitor.cjs"));
14
+ var _TypeVisitor = _interopRequireDefault(require("./visitors/json-schema/TypeVisitor.cjs"));
15
+ var _AllOfVisitor = _interopRequireDefault(require("./visitors/json-schema/AllOfVisitor.cjs"));
16
+ var _AnyOfVisitor = _interopRequireDefault(require("./visitors/json-schema/AnyOfVisitor.cjs"));
17
+ var _OneOfVisitor = _interopRequireDefault(require("./visitors/json-schema/OneOfVisitor.cjs"));
18
+ var _DefinitionsVisitor = _interopRequireDefault(require("./visitors/json-schema/DefinitionsVisitor.cjs"));
19
+ var _LinksVisitor = _interopRequireDefault(require("./visitors/json-schema/LinksVisitor.cjs"));
20
+ var _index2 = _interopRequireDefault(require("./visitors/json-schema/json-reference/index.cjs"));
21
+ var _$RefVisitor = _interopRequireDefault(require("./visitors/json-schema/json-reference/$RefVisitor.cjs"));
22
+ var _JSONSchemaOrJSONReferenceVisitor = _interopRequireDefault(require("./visitors/json-schema/JSONSchemaOrJSONReferenceVisitor.cjs"));
23
+ var _index3 = _interopRequireDefault(require("./visitors/json-schema/media/index.cjs"));
24
+ var _index4 = _interopRequireDefault(require("./visitors/json-schema/link-description/index.cjs"));
25
+ /**
26
+ * Specification object allows us to have complete control over visitors
27
+ * when traversing the ApiDOM.
28
+ * Specification also allows us to create amended refractors from
29
+ * existing ones by manipulating it.
30
+ *
31
+ * Note: Specification object allows to use absolute internal JSON pointers.
32
+ * @public
33
+ */
34
+ const specification = {
35
+ visitors: {
36
+ value: _FallbackVisitor.default,
37
+ JSONSchemaOrJSONReferenceVisitor: _JSONSchemaOrJSONReferenceVisitor.default,
38
+ document: {
39
+ objects: {
40
+ JSONSchema: {
41
+ $visitor: _index.default,
42
+ fixedFields: {
43
+ // core vocabulary
44
+ id: {
45
+ $ref: '#/visitors/value'
46
+ },
47
+ $schema: {
48
+ $ref: '#/visitors/value'
49
+ },
50
+ // validation vocabulary
51
+ // validation keywords for numeric instances (number and integer)
52
+ multipleOf: {
53
+ $ref: '#/visitors/value'
54
+ },
55
+ maximum: {
56
+ $ref: '#/visitors/value'
57
+ },
58
+ exclusiveMaximum: {
59
+ $ref: '#/visitors/value'
60
+ },
61
+ minimum: {
62
+ $ref: '#/visitors/value'
63
+ },
64
+ exclusiveMinimum: {
65
+ $ref: '#/visitors/value'
66
+ },
67
+ // validation keywords for strings
68
+ maxLength: {
69
+ $ref: '#/visitors/value'
70
+ },
71
+ minLength: {
72
+ $ref: '#/visitors/value'
73
+ },
74
+ pattern: {
75
+ $ref: '#/visitors/value'
76
+ },
77
+ // validation keywords for arrays
78
+ additionalItems: _JSONSchemaOrJSONReferenceVisitor.default,
79
+ items: _ItemsVisitor.default,
80
+ maxItems: {
81
+ $ref: '#/visitors/value'
82
+ },
83
+ minItems: {
84
+ $ref: '#/visitors/value'
85
+ },
86
+ uniqueItems: {
87
+ $ref: '#/visitors/value'
88
+ },
89
+ // validation keywords for objects
90
+ maxProperties: {
91
+ $ref: '#/visitors/value'
92
+ },
93
+ minProperties: {
94
+ $ref: '#/visitors/value'
95
+ },
96
+ required: _RequiredVisitor.default,
97
+ properties: _PropertiesVisitor.default,
98
+ additionalProperties: _JSONSchemaOrJSONReferenceVisitor.default,
99
+ patternProperties: _PatternPropertiesVisitor.default,
100
+ dependencies: _DependenciesVisitor.default,
101
+ // validation keywords for any instance type
102
+ enum: _EnumVisitor.default,
103
+ type: _TypeVisitor.default,
104
+ allOf: _AllOfVisitor.default,
105
+ anyOf: _AnyOfVisitor.default,
106
+ oneOf: _OneOfVisitor.default,
107
+ not: _JSONSchemaOrJSONReferenceVisitor.default,
108
+ definitions: _DefinitionsVisitor.default,
109
+ // metadata keywords
110
+ title: {
111
+ $ref: '#/visitors/value'
112
+ },
113
+ description: {
114
+ $ref: '#/visitors/value'
115
+ },
116
+ default: {
117
+ $ref: '#/visitors/value'
118
+ },
119
+ // semantic validation with "format"
120
+ format: {
121
+ $ref: '#/visitors/value'
122
+ },
123
+ // JSON Hyper-Schema
124
+ base: {
125
+ $ref: '#/visitors/value'
126
+ },
127
+ links: _LinksVisitor.default,
128
+ media: {
129
+ $ref: '#/visitors/document/objects/Media'
130
+ },
131
+ readOnly: {
132
+ $ref: '#/visitors/value'
133
+ }
134
+ }
135
+ },
136
+ JSONReference: {
137
+ $visitor: _index2.default,
138
+ fixedFields: {
139
+ $ref: _$RefVisitor.default
140
+ }
141
+ },
142
+ Media: {
143
+ $visitor: _index3.default,
144
+ fixedFields: {
145
+ binaryEncoding: {
146
+ $ref: '#/visitors/value'
147
+ },
148
+ type: {
149
+ $ref: '#/visitors/value'
150
+ }
151
+ }
152
+ },
153
+ LinkDescription: {
154
+ $visitor: _index4.default,
155
+ fixedFields: {
156
+ href: {
157
+ $ref: '#/visitors/value'
158
+ },
159
+ rel: {
160
+ $ref: '#/visitors/value'
161
+ },
162
+ title: {
163
+ $ref: '#/visitors/value'
164
+ },
165
+ targetSchema: _JSONSchemaOrJSONReferenceVisitor.default,
166
+ mediaType: {
167
+ $ref: '#/visitors/value'
168
+ },
169
+ method: {
170
+ $ref: '#/visitors/value'
171
+ },
172
+ encType: {
173
+ $ref: '#/visitors/value'
174
+ },
175
+ schema: _JSONSchemaOrJSONReferenceVisitor.default
176
+ }
177
+ }
178
+ }
179
+ }
180
+ }
181
+ };
182
+ var _default = exports.default = specification;