@speclynx/apidom-ns-json-schema-draft-4 1.12.2 → 2.0.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.
- package/CHANGELOG.md +21 -0
- package/NOTICE +16 -7
- package/README.md +24 -24
- package/dist/apidom-ns-json-schema-draft-4.browser.js +1 -1
- package/package.json +8 -8
- package/src/elements/JSONReference.cjs +2 -2
- package/src/elements/JSONReference.mjs +1 -2
- package/src/elements/JSONSchema.cjs +9 -9
- package/src/elements/JSONSchema.mjs +8 -8
- package/src/elements/LinkDescription.cjs +2 -2
- package/src/elements/LinkDescription.mjs +1 -1
- package/src/elements/Media.cjs +2 -2
- package/src/elements/Media.mjs +1 -2
- package/src/index.cjs +24 -21
- package/src/index.mjs +3 -4
- package/src/predicates.cjs +8 -29
- package/src/predicates.mjs +4 -29
- package/src/refractor/index.cjs +57 -16
- package/src/refractor/index.mjs +51 -15
- package/src/refractor/inspect.cjs +55 -0
- package/src/refractor/inspect.mjs +47 -0
- package/src/refractor/plugins/replace-empty-element.cjs +27 -21
- package/src/refractor/plugins/replace-empty-element.mjs +14 -8
- package/src/refractor/predicates.cjs +2 -2
- package/src/refractor/predicates.mjs +1 -1
- package/src/refractor/specification.cjs +14 -3
- package/src/refractor/specification.mjs +14 -3
- package/src/refractor/toolbox.cjs +10 -3
- package/src/refractor/toolbox.mjs +8 -2
- package/src/refractor/visitors/FallbackVisitor.cjs +4 -4
- package/src/refractor/visitors/FallbackVisitor.mjs +4 -4
- package/src/refractor/visitors/SpecificationVisitor.cjs +4 -3
- package/src/refractor/visitors/SpecificationVisitor.mjs +3 -2
- package/src/refractor/visitors/Visitor.cjs +10 -8
- package/src/refractor/visitors/Visitor.mjs +11 -9
- package/src/refractor/visitors/generics/AlternatingVisitor.cjs +3 -3
- package/src/refractor/visitors/generics/AlternatingVisitor.mjs +3 -3
- package/src/refractor/visitors/generics/FixedFieldsVisitor.cjs +10 -7
- package/src/refractor/visitors/generics/FixedFieldsVisitor.mjs +9 -6
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.cjs +9 -6
- package/src/refractor/visitors/generics/PatternedFieldsVisitor.mjs +8 -5
- package/src/refractor/visitors/json-schema/AllOfVisitor.cjs +7 -10
- package/src/refractor/visitors/json-schema/AllOfVisitor.mjs +6 -8
- package/src/refractor/visitors/json-schema/AnyOfVisitor.cjs +7 -10
- package/src/refractor/visitors/json-schema/AnyOfVisitor.mjs +6 -8
- package/src/refractor/visitors/json-schema/DefinitionsVisitor.cjs +4 -8
- package/src/refractor/visitors/json-schema/DefinitionsVisitor.mjs +3 -6
- package/src/refractor/visitors/json-schema/DependenciesVisitor.cjs +4 -8
- package/src/refractor/visitors/json-schema/DependenciesVisitor.mjs +3 -6
- package/src/refractor/visitors/json-schema/EnumVisitor.cjs +2 -3
- package/src/refractor/visitors/json-schema/EnumVisitor.mjs +2 -3
- package/src/refractor/visitors/json-schema/ItemsVisitor.cjs +10 -12
- package/src/refractor/visitors/json-schema/ItemsVisitor.mjs +9 -10
- package/src/refractor/visitors/json-schema/LinksVisitor.cjs +7 -10
- package/src/refractor/visitors/json-schema/LinksVisitor.mjs +6 -8
- package/src/refractor/visitors/json-schema/OneOfVisitor.cjs +7 -10
- package/src/refractor/visitors/json-schema/OneOfVisitor.mjs +6 -8
- package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.cjs +4 -8
- package/src/refractor/visitors/json-schema/PatternPropertiesVisitor.mjs +3 -6
- package/src/refractor/visitors/json-schema/PropertiesVisitor.cjs +4 -8
- package/src/refractor/visitors/json-schema/PropertiesVisitor.mjs +3 -6
- package/src/refractor/visitors/json-schema/RequiredVisitor.cjs +2 -3
- package/src/refractor/visitors/json-schema/RequiredVisitor.mjs +2 -3
- package/src/refractor/visitors/json-schema/TypeVisitor.cjs +4 -6
- package/src/refractor/visitors/json-schema/TypeVisitor.mjs +4 -6
- package/src/refractor/visitors/json-schema/bases.cjs +45 -0
- package/src/refractor/visitors/json-schema/bases.mjs +39 -0
- package/src/refractor/visitors/json-schema/index.cjs +12 -12
- package/src/refractor/visitors/json-schema/index.mjs +11 -11
- package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.cjs +2 -3
- package/src/refractor/visitors/json-schema/json-reference/$RefVisitor.mjs +2 -3
- package/src/refractor/visitors/json-schema/json-reference/index.cjs +6 -8
- package/src/refractor/visitors/json-schema/json-reference/index.mjs +5 -7
- package/src/refractor/visitors/json-schema/link-description/index.cjs +2 -4
- package/src/refractor/visitors/json-schema/link-description/index.mjs +2 -4
- package/src/refractor/visitors/json-schema/media/index.cjs +2 -4
- package/src/refractor/visitors/json-schema/media/index.mjs +2 -4
- package/types/apidom-ns-json-schema-draft-4.d.ts +169 -151
- package/src/refractor/registration.cjs +0 -19
- package/src/refractor/registration.mjs +0 -10
- package/src/traversal/visitor.cjs +0 -26
- package/src/traversal/visitor.mjs +0 -22
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
|
6
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
7
|
var _apidomCore = require("@speclynx/apidom-core");
|
|
8
|
+
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
7
9
|
var _JSONSchema = _interopRequireDefault(require("../../elements/JSONSchema.cjs"));
|
|
8
10
|
var _LinkDescription = _interopRequireDefault(require("../../elements/LinkDescription.cjs"));
|
|
9
11
|
var _Media = _interopRequireDefault(require("../../elements/Media.cjs"));
|
|
10
|
-
var _visitor = require("../../traversal/visitor.cjs");
|
|
11
12
|
/**
|
|
12
13
|
* JSON Schema Draft 4 specification elements.
|
|
13
14
|
*/
|
|
@@ -46,7 +47,7 @@ var _visitor = require("../../traversal/visitor.cjs");
|
|
|
46
47
|
* (JSONSchemaElement))
|
|
47
48
|
*/
|
|
48
49
|
|
|
49
|
-
const isEmptyElement = element => (0,
|
|
50
|
+
const isEmptyElement = element => (0, _apidomDatamodel.isStringElement)(element) && (0, _apidomDatamodel.includesClasses)(element, ['yaml-e-node', 'yaml-e-scalar']);
|
|
50
51
|
const schema = {
|
|
51
52
|
JSONSchemaDraft4Element: {
|
|
52
53
|
additionalItems(...args) {
|
|
@@ -56,12 +57,12 @@ const schema = {
|
|
|
56
57
|
return new _JSONSchema.default(...args);
|
|
57
58
|
},
|
|
58
59
|
required(...args) {
|
|
59
|
-
const element = new
|
|
60
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
60
61
|
element.classes.push('json-schema-required');
|
|
61
62
|
return element;
|
|
62
63
|
},
|
|
63
64
|
properties(...args) {
|
|
64
|
-
const element = new
|
|
65
|
+
const element = new _apidomDatamodel.ObjectElement(...args);
|
|
65
66
|
element.classes.push('json-schema-properties');
|
|
66
67
|
return element;
|
|
67
68
|
},
|
|
@@ -69,32 +70,32 @@ const schema = {
|
|
|
69
70
|
return new _JSONSchema.default(...args);
|
|
70
71
|
},
|
|
71
72
|
patternProperties(...args) {
|
|
72
|
-
const element = new
|
|
73
|
+
const element = new _apidomDatamodel.ObjectElement(...args);
|
|
73
74
|
element.classes.push('json-schema-patternProperties');
|
|
74
75
|
return element;
|
|
75
76
|
},
|
|
76
77
|
dependencies(...args) {
|
|
77
|
-
const element = new
|
|
78
|
+
const element = new _apidomDatamodel.ObjectElement(...args);
|
|
78
79
|
element.classes.push('json-schema-dependencies');
|
|
79
80
|
return element;
|
|
80
81
|
},
|
|
81
82
|
enum(...args) {
|
|
82
|
-
const element = new
|
|
83
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
83
84
|
element.classes.push('json-schema-enum');
|
|
84
85
|
return element;
|
|
85
86
|
},
|
|
86
87
|
allOf(...args) {
|
|
87
|
-
const element = new
|
|
88
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
88
89
|
element.classes.push('json-schema-allOf');
|
|
89
90
|
return element;
|
|
90
91
|
},
|
|
91
92
|
anyOf(...args) {
|
|
92
|
-
const element = new
|
|
93
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
93
94
|
element.classes.push('json-schema-anyOf');
|
|
94
95
|
return element;
|
|
95
96
|
},
|
|
96
97
|
oneOf(...args) {
|
|
97
|
-
const element = new
|
|
98
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
98
99
|
element.classes.push('json-schema-oneOf');
|
|
99
100
|
return element;
|
|
100
101
|
},
|
|
@@ -102,12 +103,12 @@ const schema = {
|
|
|
102
103
|
return new _JSONSchema.default(...args);
|
|
103
104
|
},
|
|
104
105
|
definitions(...args) {
|
|
105
|
-
const element = new
|
|
106
|
+
const element = new _apidomDatamodel.ObjectElement(...args);
|
|
106
107
|
element.classes.push('json-schema-definitions');
|
|
107
108
|
return element;
|
|
108
109
|
},
|
|
109
110
|
links(...args) {
|
|
110
|
-
const element = new
|
|
111
|
+
const element = new _apidomDatamodel.ArrayElement(...args);
|
|
111
112
|
element.classes.push('json-schema-links');
|
|
112
113
|
return element;
|
|
113
114
|
},
|
|
@@ -165,7 +166,7 @@ const schema = {
|
|
|
165
166
|
}
|
|
166
167
|
};
|
|
167
168
|
const findElementFactory = (ancestor, keyName) => {
|
|
168
|
-
const elementType = (0,
|
|
169
|
+
const elementType = (0, _apidomTraverse.getNodeType)(ancestor); // @ts-ignore
|
|
169
170
|
const keyMapping = schema[elementType] || schema[(0, _apidomCore.toValue)(ancestor.classes.first)];
|
|
170
171
|
return typeof keyMapping === 'undefined' ? undefined : Object.hasOwn(keyMapping, '[key: *]') ? keyMapping['[key: *]'] : keyMapping[keyName];
|
|
171
172
|
};
|
|
@@ -175,25 +176,30 @@ const findElementFactory = (ancestor, keyName) => {
|
|
|
175
176
|
*/
|
|
176
177
|
const plugin = () => () => ({
|
|
177
178
|
visitor: {
|
|
178
|
-
StringElement(
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
StringElement(path) {
|
|
180
|
+
const element = path.node;
|
|
181
|
+
if (!isEmptyElement(element)) return;
|
|
182
|
+
|
|
183
|
+
// getAncestorNodes() returns [parent, grandparent, ..., root], so reverse to get [root, ..., parent]
|
|
184
|
+
const lineage = path.getAncestorNodes().reverse().filter(_apidomDatamodel.isElement);
|
|
181
185
|
const parentElement = lineage.at(-1);
|
|
182
186
|
let elementFactory;
|
|
183
187
|
let context;
|
|
184
|
-
if ((0,
|
|
188
|
+
if ((0, _apidomDatamodel.isArrayElement)(parentElement)) {
|
|
185
189
|
context = element;
|
|
186
190
|
elementFactory = findElementFactory(parentElement, '<*>');
|
|
187
|
-
} else if ((0,
|
|
191
|
+
} else if ((0, _apidomDatamodel.isMemberElement)(parentElement)) {
|
|
188
192
|
context = lineage.at(-2);
|
|
189
193
|
elementFactory = findElementFactory(context, (0, _apidomCore.toValue)(parentElement.key));
|
|
190
194
|
}
|
|
191
195
|
|
|
192
196
|
// no element factory found
|
|
193
|
-
if (typeof elementFactory !== 'function') return
|
|
194
|
-
|
|
197
|
+
if (typeof elementFactory !== 'function') return;
|
|
198
|
+
const replacement = elementFactory.call({
|
|
195
199
|
context
|
|
196
|
-
}, undefined, (0,
|
|
200
|
+
}, undefined, (0, _apidomDatamodel.cloneDeep)(element.meta), (0, _apidomDatamodel.cloneDeep)(element.attributes));
|
|
201
|
+
_apidomDatamodel.SourceMapElement.transfer(element, replacement);
|
|
202
|
+
path.replaceWith(replacement);
|
|
197
203
|
}
|
|
198
204
|
}
|
|
199
205
|
});
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { ArrayElement, ObjectElement, isArrayElement, isElement, isMemberElement, isStringElement, includesClasses, cloneDeep,
|
|
1
|
+
import { ArrayElement, ObjectElement, isArrayElement, isElement, isMemberElement, isStringElement, includesClasses, cloneDeep, SourceMapElement } from '@speclynx/apidom-datamodel';
|
|
2
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
3
|
+
import { getNodeType } from '@speclynx/apidom-traverse';
|
|
2
4
|
|
|
3
5
|
/**
|
|
4
6
|
* JSON Schema Draft 4 specification elements.
|
|
@@ -6,7 +8,6 @@ import { ArrayElement, ObjectElement, isArrayElement, isElement, isMemberElement
|
|
|
6
8
|
import JSONSchemaElement from "../../elements/JSONSchema.mjs";
|
|
7
9
|
import LinkDescriptionElement from "../../elements/LinkDescription.mjs";
|
|
8
10
|
import MediaElement from "../../elements/Media.mjs";
|
|
9
|
-
import { getNodeType } from "../../traversal/visitor.mjs";
|
|
10
11
|
/**
|
|
11
12
|
* This plugin is specific to YAML 1.2 format, which allows defining key-value pairs
|
|
12
13
|
* with empty key, empty value, or both. If the value is not provided in YAML format,
|
|
@@ -40,7 +41,7 @@ import { getNodeType } from "../../traversal/visitor.mjs";
|
|
|
40
41
|
* (StringElement)
|
|
41
42
|
* (JSONSchemaElement))
|
|
42
43
|
*/
|
|
43
|
-
const isEmptyElement = element => isStringElement(element) && includesClasses(['yaml-e-node', 'yaml-e-scalar']
|
|
44
|
+
const isEmptyElement = element => isStringElement(element) && includesClasses(element, ['yaml-e-node', 'yaml-e-scalar']);
|
|
44
45
|
const schema = {
|
|
45
46
|
JSONSchemaDraft4Element: {
|
|
46
47
|
additionalItems(...args) {
|
|
@@ -169,9 +170,12 @@ const findElementFactory = (ancestor, keyName) => {
|
|
|
169
170
|
*/
|
|
170
171
|
const plugin = () => () => ({
|
|
171
172
|
visitor: {
|
|
172
|
-
StringElement(
|
|
173
|
-
|
|
174
|
-
|
|
173
|
+
StringElement(path) {
|
|
174
|
+
const element = path.node;
|
|
175
|
+
if (!isEmptyElement(element)) return;
|
|
176
|
+
|
|
177
|
+
// getAncestorNodes() returns [parent, grandparent, ..., root], so reverse to get [root, ..., parent]
|
|
178
|
+
const lineage = path.getAncestorNodes().reverse().filter(isElement);
|
|
175
179
|
const parentElement = lineage.at(-1);
|
|
176
180
|
let elementFactory;
|
|
177
181
|
let context;
|
|
@@ -184,10 +188,12 @@ const plugin = () => () => ({
|
|
|
184
188
|
}
|
|
185
189
|
|
|
186
190
|
// no element factory found
|
|
187
|
-
if (typeof elementFactory !== 'function') return
|
|
188
|
-
|
|
191
|
+
if (typeof elementFactory !== 'function') return;
|
|
192
|
+
const replacement = elementFactory.call({
|
|
189
193
|
context
|
|
190
194
|
}, undefined, cloneDeep(element.meta), cloneDeep(element.attributes));
|
|
195
|
+
SourceMapElement.transfer(element, replacement);
|
|
196
|
+
path.replaceWith(replacement);
|
|
191
197
|
}
|
|
192
198
|
}
|
|
193
199
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.isJSONReferenceLikeElement = void 0;
|
|
5
|
-
var
|
|
5
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
6
|
/**
|
|
7
7
|
* @public
|
|
8
8
|
*/
|
|
@@ -11,6 +11,6 @@ var _apidomCore = require("@speclynx/apidom-core");
|
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
const isJSONReferenceLikeElement = element => {
|
|
14
|
-
return (0,
|
|
14
|
+
return (0, _apidomDatamodel.isObjectElement)(element) && element.hasKey('$ref');
|
|
15
15
|
};
|
|
16
16
|
exports.isJSONReferenceLikeElement = isJSONReferenceLikeElement;
|
|
@@ -38,11 +38,13 @@ const specification = {
|
|
|
38
38
|
document: {
|
|
39
39
|
objects: {
|
|
40
40
|
JSONSchema: {
|
|
41
|
+
element: 'jSONSchemaDraft4',
|
|
41
42
|
$visitor: _index.default,
|
|
42
43
|
fixedFields: {
|
|
43
44
|
// core vocabulary
|
|
44
45
|
id: {
|
|
45
|
-
$
|
|
46
|
+
$visitor: _FallbackVisitor.default,
|
|
47
|
+
alias: 'idField'
|
|
46
48
|
},
|
|
47
49
|
$schema: {
|
|
48
50
|
$ref: '#/visitors/value'
|
|
@@ -76,7 +78,10 @@ const specification = {
|
|
|
76
78
|
},
|
|
77
79
|
// validation keywords for arrays
|
|
78
80
|
additionalItems: _JSONSchemaOrJSONReferenceVisitor.default,
|
|
79
|
-
items:
|
|
81
|
+
items: {
|
|
82
|
+
$visitor: _ItemsVisitor.default,
|
|
83
|
+
alias: 'itemsField'
|
|
84
|
+
},
|
|
80
85
|
maxItems: {
|
|
81
86
|
$ref: '#/visitors/value'
|
|
82
87
|
},
|
|
@@ -124,7 +129,10 @@ const specification = {
|
|
|
124
129
|
base: {
|
|
125
130
|
$ref: '#/visitors/value'
|
|
126
131
|
},
|
|
127
|
-
links:
|
|
132
|
+
links: {
|
|
133
|
+
$visitor: _LinksVisitor.default,
|
|
134
|
+
alias: 'linksField'
|
|
135
|
+
},
|
|
128
136
|
media: {
|
|
129
137
|
$ref: '#/visitors/document/objects/Media'
|
|
130
138
|
},
|
|
@@ -134,12 +142,14 @@ const specification = {
|
|
|
134
142
|
}
|
|
135
143
|
},
|
|
136
144
|
JSONReference: {
|
|
145
|
+
element: 'jSONReference',
|
|
137
146
|
$visitor: _index2.default,
|
|
138
147
|
fixedFields: {
|
|
139
148
|
$ref: _$RefVisitor.default
|
|
140
149
|
}
|
|
141
150
|
},
|
|
142
151
|
Media: {
|
|
152
|
+
element: 'media',
|
|
143
153
|
$visitor: _index3.default,
|
|
144
154
|
fixedFields: {
|
|
145
155
|
binaryEncoding: {
|
|
@@ -151,6 +161,7 @@ const specification = {
|
|
|
151
161
|
}
|
|
152
162
|
},
|
|
153
163
|
LinkDescription: {
|
|
164
|
+
element: 'linkDescription',
|
|
154
165
|
$visitor: _index4.default,
|
|
155
166
|
fixedFields: {
|
|
156
167
|
href: {
|
|
@@ -33,11 +33,13 @@ const specification = {
|
|
|
33
33
|
document: {
|
|
34
34
|
objects: {
|
|
35
35
|
JSONSchema: {
|
|
36
|
+
element: 'jSONSchemaDraft4',
|
|
36
37
|
$visitor: JSONSchemaVisitor,
|
|
37
38
|
fixedFields: {
|
|
38
39
|
// core vocabulary
|
|
39
40
|
id: {
|
|
40
|
-
$
|
|
41
|
+
$visitor: FallbackVisitor,
|
|
42
|
+
alias: 'idField'
|
|
41
43
|
},
|
|
42
44
|
$schema: {
|
|
43
45
|
$ref: '#/visitors/value'
|
|
@@ -71,7 +73,10 @@ const specification = {
|
|
|
71
73
|
},
|
|
72
74
|
// validation keywords for arrays
|
|
73
75
|
additionalItems: JSONSchemaOrJSONReferenceVisitor,
|
|
74
|
-
items:
|
|
76
|
+
items: {
|
|
77
|
+
$visitor: JSONSchemaItemsVisitor,
|
|
78
|
+
alias: 'itemsField'
|
|
79
|
+
},
|
|
75
80
|
maxItems: {
|
|
76
81
|
$ref: '#/visitors/value'
|
|
77
82
|
},
|
|
@@ -119,7 +124,10 @@ const specification = {
|
|
|
119
124
|
base: {
|
|
120
125
|
$ref: '#/visitors/value'
|
|
121
126
|
},
|
|
122
|
-
links:
|
|
127
|
+
links: {
|
|
128
|
+
$visitor: JSONSchemaLinksVisitor,
|
|
129
|
+
alias: 'linksField'
|
|
130
|
+
},
|
|
123
131
|
media: {
|
|
124
132
|
$ref: '#/visitors/document/objects/Media'
|
|
125
133
|
},
|
|
@@ -129,12 +137,14 @@ const specification = {
|
|
|
129
137
|
}
|
|
130
138
|
},
|
|
131
139
|
JSONReference: {
|
|
140
|
+
element: 'jSONReference',
|
|
132
141
|
$visitor: JSONReferenceVisitor,
|
|
133
142
|
fixedFields: {
|
|
134
143
|
$ref: JSONReference$RefVisitor
|
|
135
144
|
}
|
|
136
145
|
},
|
|
137
146
|
Media: {
|
|
147
|
+
element: 'media',
|
|
138
148
|
$visitor: MediaVisitor,
|
|
139
149
|
fixedFields: {
|
|
140
150
|
binaryEncoding: {
|
|
@@ -146,6 +156,7 @@ const specification = {
|
|
|
146
156
|
}
|
|
147
157
|
},
|
|
148
158
|
LinkDescription: {
|
|
159
|
+
element: 'linkDescription',
|
|
149
160
|
$visitor: LinkDescriptionVisitor,
|
|
150
161
|
fixedFields: {
|
|
151
162
|
href: {
|
|
@@ -4,15 +4,22 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
4
4
|
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
7
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
8
8
|
var jsonSchemaDraft4Predicates = _interopRequireWildcard(require("../predicates.cjs"));
|
|
9
|
+
var refractorPredicates = _interopRequireWildcard(require("./predicates.cjs"));
|
|
9
10
|
var _namespace = _interopRequireDefault(require("../namespace.cjs"));
|
|
11
|
+
/**
|
|
12
|
+
* @public
|
|
13
|
+
*/
|
|
14
|
+
|
|
10
15
|
const createToolbox = () => {
|
|
11
|
-
const namespace =
|
|
16
|
+
const namespace = new _apidomDatamodel.Namespace();
|
|
12
17
|
const predicates = {
|
|
18
|
+
...refractorPredicates,
|
|
13
19
|
...jsonSchemaDraft4Predicates,
|
|
14
|
-
isStringElement:
|
|
20
|
+
isStringElement: _apidomDatamodel.isStringElement
|
|
15
21
|
};
|
|
22
|
+
namespace.use(_namespace.default);
|
|
16
23
|
return {
|
|
17
24
|
predicates,
|
|
18
25
|
namespace
|
|
@@ -1,12 +1,18 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isStringElement, Namespace } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import * as jsonSchemaDraft4Predicates from "../predicates.mjs";
|
|
3
|
+
import * as refractorPredicates from "./predicates.mjs";
|
|
3
4
|
import jsonSchemaDraft4Namespace from "../namespace.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* @public
|
|
7
|
+
*/
|
|
4
8
|
const createToolbox = () => {
|
|
5
|
-
const namespace =
|
|
9
|
+
const namespace = new Namespace();
|
|
6
10
|
const predicates = {
|
|
11
|
+
...refractorPredicates,
|
|
7
12
|
...jsonSchemaDraft4Predicates,
|
|
8
13
|
isStringElement
|
|
9
14
|
};
|
|
15
|
+
namespace.use(jsonSchemaDraft4Namespace);
|
|
10
16
|
return {
|
|
11
17
|
predicates,
|
|
12
18
|
namespace
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
|
6
|
-
var
|
|
6
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
7
|
var _Visitor = _interopRequireDefault(require("./Visitor.cjs"));
|
|
8
8
|
/**
|
|
9
9
|
* This visitor is responsible for falling back to current traversed element
|
|
@@ -17,9 +17,9 @@ var _Visitor = _interopRequireDefault(require("./Visitor.cjs"));
|
|
|
17
17
|
* @public
|
|
18
18
|
*/
|
|
19
19
|
class FallbackVisitor extends _Visitor.default {
|
|
20
|
-
enter(
|
|
21
|
-
this.element = (0,
|
|
22
|
-
|
|
20
|
+
enter(path) {
|
|
21
|
+
this.element = (0, _apidomDatamodel.cloneDeep)(path.node);
|
|
22
|
+
path.stop();
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
var _default = exports.default = FallbackVisitor;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import Visitor from "./Visitor.mjs";
|
|
3
3
|
/**
|
|
4
4
|
* This visitor is responsible for falling back to current traversed element
|
|
@@ -11,9 +11,9 @@ import Visitor from "./Visitor.mjs";
|
|
|
11
11
|
* @public
|
|
12
12
|
*/
|
|
13
13
|
class FallbackVisitor extends Visitor {
|
|
14
|
-
enter(
|
|
15
|
-
this.element = cloneDeep(
|
|
16
|
-
|
|
14
|
+
enter(path) {
|
|
15
|
+
this.element = cloneDeep(path.node);
|
|
16
|
+
path.stop();
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
export default FallbackVisitor;
|
|
@@ -5,7 +5,8 @@ exports.__esModule = true;
|
|
|
5
5
|
exports.default = void 0;
|
|
6
6
|
var _ramda = require("ramda");
|
|
7
7
|
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
-
var
|
|
8
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
9
|
+
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
9
10
|
var _Visitor = _interopRequireDefault(require("./Visitor.cjs"));
|
|
10
11
|
var _FallbackVisitor = _interopRequireDefault(require("./FallbackVisitor.cjs"));
|
|
11
12
|
/**
|
|
@@ -65,9 +66,9 @@ class SpecificationVisitor extends _Visitor.default {
|
|
|
65
66
|
*/
|
|
66
67
|
const visitor = this.retrieveVisitorInstance(specPath, options);
|
|
67
68
|
if (visitor instanceof _FallbackVisitor.default && visitor?.constructor === _FallbackVisitor.default) {
|
|
68
|
-
return (0,
|
|
69
|
+
return (0, _apidomDatamodel.cloneDeep)(element);
|
|
69
70
|
}
|
|
70
|
-
(0,
|
|
71
|
+
(0, _apidomTraverse.traverse)(element, visitor, options);
|
|
71
72
|
return visitor.element;
|
|
72
73
|
}
|
|
73
74
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { pathSatisfies, path, pick } from 'ramda';
|
|
2
2
|
import { isFunction } from 'ramda-adjunct';
|
|
3
|
-
import {
|
|
3
|
+
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
4
|
+
import { traverse } from '@speclynx/apidom-traverse';
|
|
4
5
|
import Visitor from "./Visitor.mjs";
|
|
5
6
|
import FallbackVisitor from "./FallbackVisitor.mjs";
|
|
6
7
|
/**
|
|
@@ -61,7 +62,7 @@ class SpecificationVisitor extends Visitor {
|
|
|
61
62
|
if (visitor instanceof FallbackVisitor && visitor?.constructor === FallbackVisitor) {
|
|
62
63
|
return cloneDeep(element);
|
|
63
64
|
}
|
|
64
|
-
|
|
65
|
+
traverse(element, visitor, options);
|
|
65
66
|
return visitor.element;
|
|
66
67
|
}
|
|
67
68
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
exports.__esModule = true;
|
|
4
4
|
exports.default = void 0;
|
|
5
5
|
var _apidomCore = require("@speclynx/apidom-core");
|
|
6
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
7
|
/**
|
|
7
8
|
* @public
|
|
8
9
|
*/
|
|
@@ -16,16 +17,17 @@ class Visitor {
|
|
|
16
17
|
Object.assign(this, options);
|
|
17
18
|
}
|
|
18
19
|
copyMetaAndAttributes(from, to) {
|
|
19
|
-
if (from.
|
|
20
|
-
to.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
to.meta.set('sourceMap', from.meta.get('sourceMap'));
|
|
24
|
-
}
|
|
20
|
+
if (!from.isMetaEmpty || !to.isMetaEmpty) {
|
|
21
|
+
const target = to.isMetaEmpty ? new _apidomDatamodel.ObjectElement() : to.meta;
|
|
22
|
+
const source = from.isMetaEmpty ? new _apidomDatamodel.ObjectElement() : from.meta;
|
|
23
|
+
to.meta = (0, _apidomCore.deepmerge)(target, source);
|
|
25
24
|
}
|
|
26
|
-
if (from.
|
|
27
|
-
to.
|
|
25
|
+
if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
|
|
26
|
+
const target = to.isAttributesEmpty ? new _apidomDatamodel.ObjectElement() : to.attributes;
|
|
27
|
+
const source = from.isAttributesEmpty ? new _apidomDatamodel.ObjectElement() : from.attributes;
|
|
28
|
+
to.attributes = (0, _apidomCore.deepmerge)(target, source);
|
|
28
29
|
}
|
|
30
|
+
_apidomDatamodel.SourceMapElement.transfer(from, to);
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
var _default = exports.default = Visitor;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { deepmerge } from '@speclynx/apidom-core';
|
|
2
|
+
import { ObjectElement, SourceMapElement } from '@speclynx/apidom-datamodel';
|
|
2
3
|
|
|
3
4
|
/**
|
|
4
5
|
* @public
|
|
@@ -13,16 +14,17 @@ class Visitor {
|
|
|
13
14
|
Object.assign(this, options);
|
|
14
15
|
}
|
|
15
16
|
copyMetaAndAttributes(from, to) {
|
|
16
|
-
if (from.
|
|
17
|
-
to.
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
to.meta.set('sourceMap', from.meta.get('sourceMap'));
|
|
21
|
-
}
|
|
17
|
+
if (!from.isMetaEmpty || !to.isMetaEmpty) {
|
|
18
|
+
const target = to.isMetaEmpty ? new ObjectElement() : to.meta;
|
|
19
|
+
const source = from.isMetaEmpty ? new ObjectElement() : from.meta;
|
|
20
|
+
to.meta = deepmerge(target, source);
|
|
22
21
|
}
|
|
23
|
-
if (from.
|
|
24
|
-
to.
|
|
22
|
+
if (!from.isAttributesEmpty || !to.isAttributesEmpty) {
|
|
23
|
+
const target = to.isAttributesEmpty ? new ObjectElement() : to.attributes;
|
|
24
|
+
const source = from.isAttributesEmpty ? new ObjectElement() : from.attributes;
|
|
25
|
+
to.attributes = deepmerge(target, source);
|
|
25
26
|
}
|
|
27
|
+
SourceMapElement.transfer(from, to);
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
export default Visitor;
|
|
@@ -5,7 +5,6 @@ exports.__esModule = true;
|
|
|
5
5
|
exports.default = void 0;
|
|
6
6
|
var _ramda = require("ramda");
|
|
7
7
|
var _ramdaAdjunct = require("ramda-adjunct");
|
|
8
|
-
var _apidomCore = require("@speclynx/apidom-core");
|
|
9
8
|
var _SpecificationVisitor = _interopRequireDefault(require("../SpecificationVisitor.cjs"));
|
|
10
9
|
/**
|
|
11
10
|
* @public
|
|
@@ -29,14 +28,15 @@ class AlternatingVisitor extends _SpecificationVisitor.default {
|
|
|
29
28
|
});
|
|
30
29
|
this.alternator = alternator;
|
|
31
30
|
}
|
|
32
|
-
enter(
|
|
31
|
+
enter(path) {
|
|
32
|
+
const element = path.node;
|
|
33
33
|
const functions = this.alternator.map(({
|
|
34
34
|
predicate,
|
|
35
35
|
specPath
|
|
36
36
|
}) => (0, _ramda.ifElse)(predicate, (0, _ramda.always)(specPath), _ramdaAdjunct.stubUndefined));
|
|
37
37
|
const specPath = (0, _ramdaAdjunct.dispatch)(functions)(element);
|
|
38
38
|
this.element = this.toRefractedElement(specPath, element);
|
|
39
|
-
|
|
39
|
+
path.stop();
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
var _default = exports.default = AlternatingVisitor;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ifElse, always } from 'ramda';
|
|
2
2
|
import { dispatch, stubUndefined } from 'ramda-adjunct';
|
|
3
|
-
import { BREAK } from '@speclynx/apidom-core';
|
|
4
3
|
import SpecificationVisitor from "../SpecificationVisitor.mjs";
|
|
5
4
|
/**
|
|
6
5
|
* @public
|
|
@@ -22,14 +21,15 @@ class AlternatingVisitor extends SpecificationVisitor {
|
|
|
22
21
|
});
|
|
23
22
|
this.alternator = alternator;
|
|
24
23
|
}
|
|
25
|
-
enter(
|
|
24
|
+
enter(path) {
|
|
25
|
+
const element = path.node;
|
|
26
26
|
const functions = this.alternator.map(({
|
|
27
27
|
predicate,
|
|
28
28
|
specPath
|
|
29
29
|
}) => ifElse(predicate, always(specPath), stubUndefined));
|
|
30
30
|
const specPath = dispatch(functions)(element);
|
|
31
31
|
this.element = this.toRefractedElement(specPath, element);
|
|
32
|
-
|
|
32
|
+
path.stop();
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
export default AlternatingVisitor;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.default = void 0;
|
|
6
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
6
7
|
var _apidomCore = require("@speclynx/apidom-core");
|
|
7
8
|
var _SpecificationVisitor = _interopRequireDefault(require("../SpecificationVisitor.cjs"));
|
|
8
9
|
/**
|
|
@@ -30,24 +31,26 @@ class FixedFieldsVisitor extends _SpecificationVisitor.default {
|
|
|
30
31
|
this.specPath = specPath;
|
|
31
32
|
this.ignoredFields = ignoredFields || [];
|
|
32
33
|
}
|
|
33
|
-
ObjectElement(
|
|
34
|
+
ObjectElement(path) {
|
|
35
|
+
const objectElement = path.node;
|
|
34
36
|
const specPath = this.specPath(objectElement);
|
|
35
37
|
const fields = this.retrieveFixedFields(specPath);
|
|
36
38
|
|
|
37
39
|
// @ts-ignore
|
|
38
40
|
objectElement.forEach((value, key, memberElement) => {
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const
|
|
41
|
+
const keyValue = (0, _apidomCore.toValue)(key);
|
|
42
|
+
if ((0, _apidomDatamodel.isStringElement)(key) && fields.includes(keyValue) && !this.ignoredFields.includes(keyValue)) {
|
|
43
|
+
const fixedFieldElement = this.toRefractedElement([...specPath, 'fixedFields', keyValue], value);
|
|
44
|
+
const newMemberElement = new _apidomDatamodel.MemberElement((0, _apidomDatamodel.cloneDeep)(key), fixedFieldElement);
|
|
42
45
|
this.copyMetaAndAttributes(memberElement, newMemberElement);
|
|
43
46
|
newMemberElement.classes.push('fixed-field');
|
|
44
47
|
this.element.content.push(newMemberElement);
|
|
45
|
-
} else if (!this.ignoredFields.includes(
|
|
46
|
-
this.element.content.push((0,
|
|
48
|
+
} else if (!this.ignoredFields.includes(keyValue)) {
|
|
49
|
+
this.element.content.push((0, _apidomDatamodel.cloneDeep)(memberElement));
|
|
47
50
|
}
|
|
48
51
|
});
|
|
49
52
|
this.copyMetaAndAttributes(objectElement, this.element);
|
|
50
|
-
|
|
53
|
+
path.stop();
|
|
51
54
|
}
|
|
52
55
|
}
|
|
53
56
|
var _default = exports.default = FixedFieldsVisitor;
|