@swagger-api/apidom-parser-adapter-json 0.90.0 → 0.92.0
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 +8 -0
- package/README.md +1 -1
- package/cjs/syntactic-analysis/direct/index.cjs +1 -1
- package/cjs/syntactic-analysis/direct/visitors/CstVisitor.cjs +138 -151
- package/cjs/syntactic-analysis/indirect/index.cjs +2 -2
- package/cjs/syntactic-analysis/indirect/visitors/CstVisitor.cjs +138 -147
- package/cjs/syntactic-analysis/indirect/visitors/JsonAstVisitor.cjs +129 -137
- package/dist/apidom-parser-adapter-json.browser.js +447 -482
- package/dist/apidom-parser-adapter-json.browser.min.js +1 -1
- package/es/syntactic-analysis/direct/index.mjs +1 -1
- package/es/syntactic-analysis/direct/visitors/CstVisitor.mjs +138 -151
- package/es/syntactic-analysis/indirect/index.mjs +2 -2
- package/es/syntactic-analysis/indirect/visitors/CstVisitor.mjs +138 -147
- package/es/syntactic-analysis/indirect/visitors/JsonAstVisitor.mjs +129 -136
- package/package.json +5 -6
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
|
|
4
3
|
exports.__esModule = true;
|
|
5
4
|
exports.keyMap = exports.isNode = exports.getNodeType = exports.default = void 0;
|
|
6
|
-
var _stampit = _interopRequireDefault(require("stampit"));
|
|
7
5
|
var _apidomAst = require("@swagger-api/apidom-ast");
|
|
8
6
|
var _apidomCore = require("@swagger-api/apidom-core");
|
|
9
7
|
const keyMap = exports.keyMap = {
|
|
@@ -35,150 +33,144 @@ const isNode = element => (0, _apidomCore.isElement)(element) || (0, _apidomAst.
|
|
|
35
33
|
|
|
36
34
|
/* eslint-disable no-underscore-dangle */
|
|
37
35
|
exports.isNode = isNode;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
init() {
|
|
44
|
-
/**
|
|
45
|
-
* Private API.
|
|
46
|
-
*/
|
|
47
|
-
|
|
48
|
-
this.annotation = [];
|
|
49
|
-
const maybeAddSourceMap = (node, element) => {
|
|
50
|
-
if (!this.sourceMap) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const sourceMap = new _apidomCore.SourceMapElement();
|
|
54
|
-
// @ts-ignore
|
|
55
|
-
sourceMap.position = node.position;
|
|
36
|
+
class JsonAstVisitor {
|
|
37
|
+
sourceMap = false;
|
|
38
|
+
ParseResultElement = {
|
|
39
|
+
leave: element => {
|
|
40
|
+
// mark first-non Annotation element as result
|
|
56
41
|
// @ts-ignore
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
* Public API.
|
|
63
|
-
*/
|
|
42
|
+
const elements = element.findElements(_apidomCore.isPrimitiveElement);
|
|
43
|
+
if (elements.length > 0) {
|
|
44
|
+
const resultElement = elements[0];
|
|
45
|
+
resultElement.classes.push('result');
|
|
46
|
+
}
|
|
64
47
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const elements = element.findElements(_apidomCore.isPrimitiveElement);
|
|
76
|
-
if (elements.length > 0) {
|
|
77
|
-
const resultElement = elements[0];
|
|
78
|
-
resultElement.classes.push('result');
|
|
79
|
-
}
|
|
48
|
+
// provide annotations
|
|
49
|
+
this.annotations.forEach(annotationElement => {
|
|
50
|
+
element.push(annotationElement);
|
|
51
|
+
});
|
|
52
|
+
this.annotations = [];
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
constructor() {
|
|
56
|
+
this.annotations = [];
|
|
57
|
+
}
|
|
80
58
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
59
|
+
// eslint-disable-next-line class-methods-use-this
|
|
60
|
+
document(node) {
|
|
61
|
+
const element = new _apidomCore.ParseResultElement();
|
|
62
|
+
// @ts-ignore
|
|
63
|
+
element._content = node.children;
|
|
64
|
+
return element;
|
|
65
|
+
}
|
|
66
|
+
object(node) {
|
|
67
|
+
const element = new _apidomCore.ObjectElement();
|
|
68
|
+
// @ts-ignore
|
|
69
|
+
element._content = node.children;
|
|
70
|
+
this.maybeAddSourceMap(node, element);
|
|
71
|
+
return element;
|
|
72
|
+
}
|
|
73
|
+
property(node) {
|
|
74
|
+
const element = new _apidomCore.MemberElement();
|
|
97
75
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
76
|
+
// @ts-ignore
|
|
77
|
+
element.content.key = node.key;
|
|
78
|
+
// @ts-ignore
|
|
79
|
+
element.content.value = node.value;
|
|
80
|
+
this.maybeAddSourceMap(node, element);
|
|
103
81
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Process possible errors here that may be present in pair node children as we're using direct field access.
|
|
84
|
+
* There are usually 3 children here found: "key", ":", "value".
|
|
85
|
+
*/
|
|
86
|
+
if (node.children.length > 3) {
|
|
87
|
+
node.children
|
|
88
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
89
|
+
.filter(child => child.type === 'error')
|
|
90
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
91
|
+
.forEach(errorNode => {
|
|
92
|
+
this.error(errorNode, node, [], [node]);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
return element;
|
|
96
|
+
}
|
|
97
|
+
key(node) {
|
|
98
|
+
const element = new _apidomCore.StringElement(node.value);
|
|
99
|
+
this.maybeAddSourceMap(node, element);
|
|
100
|
+
return element;
|
|
101
|
+
}
|
|
102
|
+
array(node) {
|
|
103
|
+
const element = new _apidomCore.ArrayElement();
|
|
104
|
+
// @ts-ignore
|
|
105
|
+
element._content = node.children;
|
|
106
|
+
this.maybeAddSourceMap(node, element);
|
|
107
|
+
return element;
|
|
108
|
+
}
|
|
109
|
+
string(node) {
|
|
110
|
+
const element = new _apidomCore.StringElement(node.value);
|
|
111
|
+
this.maybeAddSourceMap(node, element);
|
|
112
|
+
return element;
|
|
113
|
+
}
|
|
114
|
+
number(node) {
|
|
115
|
+
const element = new _apidomCore.NumberElement(Number(node.value));
|
|
116
|
+
this.maybeAddSourceMap(node, element);
|
|
117
|
+
return element;
|
|
118
|
+
}
|
|
137
119
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
120
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
121
|
+
null(node) {
|
|
122
|
+
const element = new _apidomCore.NullElement();
|
|
123
|
+
this.maybeAddSourceMap(node, element);
|
|
124
|
+
return element;
|
|
125
|
+
}
|
|
144
126
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
127
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
128
|
+
true(node) {
|
|
129
|
+
const element = new _apidomCore.BooleanElement(true);
|
|
130
|
+
this.maybeAddSourceMap(node, element);
|
|
131
|
+
return element;
|
|
132
|
+
}
|
|
151
133
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const element = new _apidomCore.AnnotationElement(message);
|
|
162
|
-
element.classes.push('warning');
|
|
163
|
-
maybeAddSourceMap(node, element);
|
|
164
|
-
this.annotations.push(element);
|
|
165
|
-
}
|
|
166
|
-
return null;
|
|
167
|
-
};
|
|
168
|
-
this.error = function error(node, key, parent, path) {
|
|
169
|
-
const message = node.isUnexpected ? `(Unexpected ${node.value})` : `(Error ${node.value})`;
|
|
134
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
135
|
+
false(node) {
|
|
136
|
+
const element = new _apidomCore.BooleanElement(false);
|
|
137
|
+
this.maybeAddSourceMap(node, element);
|
|
138
|
+
return element;
|
|
139
|
+
}
|
|
140
|
+
literal(node) {
|
|
141
|
+
if (node.isMissing) {
|
|
142
|
+
const message = `(Missing ${node.value})`;
|
|
170
143
|
const element = new _apidomCore.AnnotationElement(message);
|
|
171
|
-
element.classes.push('
|
|
172
|
-
maybeAddSourceMap(node, element);
|
|
173
|
-
if (path.length === 0) {
|
|
174
|
-
// no document to visit, only error is present in CST
|
|
175
|
-
const parseResultElement = new _apidomCore.ParseResultElement();
|
|
176
|
-
parseResultElement.push(element);
|
|
177
|
-
return parseResultElement;
|
|
178
|
-
}
|
|
144
|
+
element.classes.push('warning');
|
|
145
|
+
this.maybeAddSourceMap(node, element);
|
|
179
146
|
this.annotations.push(element);
|
|
180
|
-
|
|
181
|
-
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
}
|
|
150
|
+
error(node, key, parent, path) {
|
|
151
|
+
const message = node.isUnexpected ? `(Unexpected ${node.value})` : `(Error ${node.value})`;
|
|
152
|
+
const element = new _apidomCore.AnnotationElement(message);
|
|
153
|
+
element.classes.push('error');
|
|
154
|
+
this.maybeAddSourceMap(node, element);
|
|
155
|
+
if (path.length === 0) {
|
|
156
|
+
// no document to visit, only error is present in CST
|
|
157
|
+
const parseResultElement = new _apidomCore.ParseResultElement();
|
|
158
|
+
parseResultElement.push(element);
|
|
159
|
+
return parseResultElement;
|
|
160
|
+
}
|
|
161
|
+
this.annotations.push(element);
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
maybeAddSourceMap(node, element) {
|
|
165
|
+
if (!this.sourceMap) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const sourceMap = new _apidomCore.SourceMapElement();
|
|
169
|
+
// @ts-ignore
|
|
170
|
+
sourceMap.position = node.position;
|
|
171
|
+
// @ts-ignore
|
|
172
|
+
sourceMap.astNode = node;
|
|
173
|
+
element.meta.set('sourceMap', sourceMap);
|
|
182
174
|
}
|
|
183
|
-
}
|
|
175
|
+
}
|
|
184
176
|
var _default = exports.default = JsonAstVisitor;
|