@speclynx/apidom-reference 1.12.2 → 2.1.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 +25 -0
- package/NOTICE +16 -7
- package/README.md +0 -33
- package/dist/167.apidom-reference.browser.min.js +1 -1
- package/dist/451.apidom-reference.browser.min.js +1 -1
- package/dist/apidom-reference.browser.js +29265 -23972
- package/dist/apidom-reference.browser.min.js +1 -1
- package/package.json +24 -57
- package/src/configuration/saturated.cjs +34 -42
- package/src/configuration/saturated.mjs +0 -8
- package/src/dereference/index.cjs +4 -4
- package/src/dereference/index.mjs +1 -1
- package/src/dereference/strategies/apidom/index.cjs +7 -7
- package/src/dereference/strategies/apidom/index.mjs +5 -6
- package/src/dereference/strategies/apidom/selectors/element-id.cjs +4 -2
- package/src/dereference/strategies/apidom/selectors/element-id.mjs +5 -3
- package/src/dereference/strategies/apidom/visitor.cjs +31 -17
- package/src/dereference/strategies/apidom/visitor.mjs +25 -12
- package/src/dereference/strategies/asyncapi-2/index.cjs +6 -9
- package/src/dereference/strategies/asyncapi-2/index.mjs +6 -10
- package/src/dereference/strategies/asyncapi-2/visitor.cjs +67 -80
- package/src/dereference/strategies/asyncapi-2/visitor.mjs +59 -72
- package/src/dereference/strategies/openapi-2/index.cjs +6 -9
- package/src/dereference/strategies/openapi-2/index.mjs +6 -10
- package/src/dereference/strategies/openapi-2/visitor.cjs +91 -100
- package/src/dereference/strategies/openapi-2/visitor.mjs +81 -90
- package/src/dereference/strategies/openapi-3-0/index.cjs +6 -9
- package/src/dereference/strategies/openapi-3-0/index.mjs +6 -10
- package/src/dereference/strategies/openapi-3-0/visitor.cjs +92 -115
- package/src/dereference/strategies/openapi-3-0/visitor.mjs +74 -97
- package/src/dereference/strategies/openapi-3-1/index.cjs +6 -9
- package/src/dereference/strategies/openapi-3-1/index.mjs +6 -10
- package/src/dereference/strategies/openapi-3-1/selectors/$anchor.cjs +2 -1
- package/src/dereference/strategies/openapi-3-1/selectors/$anchor.mjs +3 -2
- package/src/dereference/strategies/openapi-3-1/selectors/uri.cjs +2 -2
- package/src/dereference/strategies/openapi-3-1/selectors/uri.mjs +2 -2
- package/src/dereference/strategies/openapi-3-1/util.cjs +3 -2
- package/src/dereference/strategies/openapi-3-1/util.mjs +4 -3
- package/src/dereference/strategies/openapi-3-1/visitor.cjs +130 -156
- package/src/dereference/strategies/openapi-3-1/visitor.mjs +106 -132
- package/src/dereference/util.cjs +2 -2
- package/src/dereference/util.mjs +1 -1
- package/src/parse/parsers/apidom-json/index.cjs +5 -5
- package/src/parse/parsers/apidom-json/index.mjs +2 -2
- package/src/parse/parsers/arazzo-json-1/index.cjs +1 -2
- package/src/parse/parsers/arazzo-json-1/index.mjs +1 -2
- package/src/parse/parsers/asyncapi-json-2/index.cjs +1 -2
- package/src/parse/parsers/asyncapi-json-2/index.mjs +1 -2
- package/src/parse/parsers/binary/index-browser.cjs +3 -3
- package/src/parse/parsers/binary/index-browser.mjs +1 -1
- package/src/parse/parsers/binary/index-node.cjs +3 -3
- package/src/parse/parsers/binary/index-node.mjs +1 -1
- package/src/parse/parsers/json/index.cjs +1 -2
- package/src/parse/parsers/json/index.mjs +1 -2
- package/src/parse/parsers/openapi-json-2/index.cjs +1 -2
- package/src/parse/parsers/openapi-json-2/index.mjs +1 -2
- package/src/parse/parsers/openapi-json-3-0/index.cjs +1 -2
- package/src/parse/parsers/openapi-json-3-0/index.mjs +1 -2
- package/src/parse/parsers/openapi-json-3-1/index.cjs +1 -2
- package/src/parse/parsers/openapi-json-3-1/index.mjs +1 -2
- package/src/resolve/index.cjs +4 -4
- package/src/resolve/index.mjs +1 -1
- package/types/File.d.ts +1 -1
- package/types/Reference.d.ts +1 -1
- package/types/ReferenceSet.d.ts +1 -1
- package/types/apidom-reference.d.ts +8 -9
- package/types/bundle/index.d.ts +1 -1
- package/types/bundle/strategies/BundleStrategy.d.ts +1 -1
- package/types/bundle/strategies/openapi-3-1/index.d.ts +1 -1
- package/types/dereference/index.d.ts +1 -1
- package/types/dereference/strategies/DereferenceStrategy.d.ts +1 -1
- package/types/dereference/strategies/apidom/index.d.ts +1 -1
- package/types/dereference/strategies/apidom/selectors/element-id.d.ts +1 -1
- package/types/dereference/strategies/apidom/visitor.d.ts +3 -2
- package/types/dereference/strategies/asyncapi-2/index.d.ts +2 -2
- package/types/dereference/strategies/asyncapi-2/visitor.d.ts +5 -14
- package/types/dereference/strategies/openapi-2/index.d.ts +2 -2
- package/types/dereference/strategies/openapi-2/visitor.d.ts +6 -17
- package/types/dereference/strategies/openapi-3-0/index.d.ts +2 -2
- package/types/dereference/strategies/openapi-3-0/visitor.d.ts +7 -20
- package/types/dereference/strategies/openapi-3-1/index.d.ts +2 -2
- package/types/dereference/strategies/openapi-3-1/selectors/$anchor.d.ts +1 -1
- package/types/dereference/strategies/openapi-3-1/selectors/uri.d.ts +1 -1
- package/types/dereference/strategies/openapi-3-1/util.d.ts +1 -1
- package/types/dereference/strategies/openapi-3-1/visitor.d.ts +8 -23
- package/types/dereference/util.d.ts +1 -1
- package/types/index.d.ts +1 -1
- package/types/options/index.d.ts +1 -1
- package/types/parse/index.d.ts +1 -1
- package/types/parse/parsers/Parser.d.ts +1 -1
- package/types/parse/parsers/apidom-json/index.d.ts +1 -1
- package/types/parse/parsers/arazzo-json-1/index.d.ts +1 -2
- package/types/parse/parsers/arazzo-yaml-1/index.d.ts +1 -1
- package/types/parse/parsers/asyncapi-json-2/index.d.ts +1 -2
- package/types/parse/parsers/asyncapi-yaml-2/index.d.ts +1 -1
- package/types/parse/parsers/binary/index-browser.d.ts +1 -1
- package/types/parse/parsers/binary/index-node.d.ts +1 -1
- package/types/parse/parsers/json/index.d.ts +1 -2
- package/types/parse/parsers/openapi-json-2/index.d.ts +1 -2
- package/types/parse/parsers/openapi-json-3-0/index.d.ts +1 -2
- package/types/parse/parsers/openapi-json-3-1/index.d.ts +1 -2
- package/types/parse/parsers/openapi-yaml-2/index.d.ts +1 -1
- package/types/parse/parsers/openapi-yaml-3-0/index.d.ts +1 -1
- package/types/parse/parsers/openapi-yaml-3-1/index.d.ts +1 -1
- package/types/parse/parsers/yaml-1-2/index.d.ts +1 -1
- package/types/resolve/index.d.ts +1 -1
- package/src/parse/parsers/api-design-systems-json/index.cjs +0 -55
- package/src/parse/parsers/api-design-systems-json/index.mjs +0 -49
- package/src/parse/parsers/api-design-systems-yaml/index.cjs +0 -54
- package/src/parse/parsers/api-design-systems-yaml/index.mjs +0 -48
- package/types/parse/parsers/api-design-systems-json/index.d.ts +0 -21
- package/types/parse/parsers/api-design-systems-yaml/index.d.ts +0 -20
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-reference",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Advanced algorithms for semantic ApiDOM manipulations like dereferencing or resolution.",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -79,16 +79,6 @@
|
|
|
79
79
|
"require": "./src/resolve/strategies/openapi-3-1/index.cjs",
|
|
80
80
|
"types": "./types/resolve/strategies/openapi-3-1/index.d.ts"
|
|
81
81
|
},
|
|
82
|
-
"./parse/parsers/api-design-systems-json": {
|
|
83
|
-
"import": "./src/parse/parsers/api-design-systems-json/index.mjs",
|
|
84
|
-
"require": "./src/parse/parsers/api-design-systems-json/index.cjs",
|
|
85
|
-
"types": "./types/parse/parsers/api-design-systems-json/index.d.ts"
|
|
86
|
-
},
|
|
87
|
-
"./parse/parsers/api-design-systems-yaml": {
|
|
88
|
-
"import": "./src/parse/parsers/api-design-systems-yaml/index.mjs",
|
|
89
|
-
"require": "./src/parse/parsers/api-design-systems-yaml/index.cjs",
|
|
90
|
-
"types": "./types/parse/parsers/api-design-systems-yaml/index.d.ts"
|
|
91
|
-
},
|
|
92
82
|
"./parse/parsers/asyncapi-json-2": {
|
|
93
83
|
"import": "./src/parse/parsers/asyncapi-json-2/index.mjs",
|
|
94
84
|
"require": "./src/parse/parsers/asyncapi-json-2/index.cjs",
|
|
@@ -236,58 +226,35 @@
|
|
|
236
226
|
"license": "Apache-2.0",
|
|
237
227
|
"dependencies": {
|
|
238
228
|
"@babel/runtime-corejs3": "^7.28.4",
|
|
239
|
-
"@speclynx/apidom-core": "^1.
|
|
240
|
-
"@speclynx/apidom-
|
|
241
|
-
"@
|
|
229
|
+
"@speclynx/apidom-core": "^2.1.0",
|
|
230
|
+
"@speclynx/apidom-datamodel": "^2.1.0",
|
|
231
|
+
"@speclynx/apidom-error": "^2.1.0",
|
|
232
|
+
"@speclynx/apidom-json-pointer": "^2.1.0",
|
|
233
|
+
"@speclynx/apidom-ns-arazzo-1": "^2.1.0",
|
|
234
|
+
"@speclynx/apidom-ns-asyncapi-2": "^2.1.0",
|
|
235
|
+
"@speclynx/apidom-ns-openapi-2": "^2.1.0",
|
|
236
|
+
"@speclynx/apidom-ns-openapi-3-0": "^2.1.0",
|
|
237
|
+
"@speclynx/apidom-ns-openapi-3-1": "^2.1.0",
|
|
238
|
+
"@speclynx/apidom-parser-adapter-arazzo-json-1": "^2.1.0",
|
|
239
|
+
"@speclynx/apidom-parser-adapter-arazzo-yaml-1": "^2.1.0",
|
|
240
|
+
"@speclynx/apidom-parser-adapter-asyncapi-json-2": "^2.1.0",
|
|
241
|
+
"@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "^2.1.0",
|
|
242
|
+
"@speclynx/apidom-parser-adapter-json": "^2.1.0",
|
|
243
|
+
"@speclynx/apidom-parser-adapter-openapi-json-2": "^2.1.0",
|
|
244
|
+
"@speclynx/apidom-parser-adapter-openapi-json-3-0": "^2.1.0",
|
|
245
|
+
"@speclynx/apidom-parser-adapter-openapi-json-3-1": "^2.1.0",
|
|
246
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-2": "^2.1.0",
|
|
247
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "^2.1.0",
|
|
248
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "^2.1.0",
|
|
249
|
+
"@speclynx/apidom-parser-adapter-yaml-1-2": "^2.1.0",
|
|
250
|
+
"@speclynx/apidom-traverse": "^2.1.0",
|
|
242
251
|
"axios": "^1.13.0",
|
|
243
252
|
"minimatch": "^7.4.6",
|
|
244
253
|
"process": "^0.11.10",
|
|
245
254
|
"ramda": "~0.32.0",
|
|
246
255
|
"ramda-adjunct": "^6.0.0"
|
|
247
256
|
},
|
|
248
|
-
"optionalDependencies": {
|
|
249
|
-
"@speclynx/apidom-json-pointer": "^1.12.2",
|
|
250
|
-
"@speclynx/apidom-ns-arazzo-1": "^1.12.2",
|
|
251
|
-
"@speclynx/apidom-ns-asyncapi-2": "^1.12.2",
|
|
252
|
-
"@speclynx/apidom-ns-openapi-2": "^1.12.2",
|
|
253
|
-
"@speclynx/apidom-ns-openapi-3-0": "^1.12.2",
|
|
254
|
-
"@speclynx/apidom-ns-openapi-3-1": "^1.12.2",
|
|
255
|
-
"@speclynx/apidom-parser-adapter-api-design-systems-json": "^1.12.2",
|
|
256
|
-
"@speclynx/apidom-parser-adapter-api-design-systems-yaml": "^1.12.2",
|
|
257
|
-
"@speclynx/apidom-parser-adapter-arazzo-json-1": "^1.12.2",
|
|
258
|
-
"@speclynx/apidom-parser-adapter-arazzo-yaml-1": "^1.12.2",
|
|
259
|
-
"@speclynx/apidom-parser-adapter-asyncapi-json-2": "^1.12.2",
|
|
260
|
-
"@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "^1.12.2",
|
|
261
|
-
"@speclynx/apidom-parser-adapter-json": "^1.12.2",
|
|
262
|
-
"@speclynx/apidom-parser-adapter-openapi-json-2": "^1.12.2",
|
|
263
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-0": "^1.12.2",
|
|
264
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-1": "^1.12.2",
|
|
265
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-2": "^1.12.2",
|
|
266
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "^1.12.2",
|
|
267
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "^1.12.2",
|
|
268
|
-
"@speclynx/apidom-parser-adapter-yaml-1-2": "^1.12.2"
|
|
269
|
-
},
|
|
270
257
|
"devDependencies": {
|
|
271
|
-
"@speclynx/apidom-json-pointer": "*",
|
|
272
|
-
"@speclynx/apidom-ns-arazzo-1": "*",
|
|
273
|
-
"@speclynx/apidom-ns-asyncapi-2": "*",
|
|
274
|
-
"@speclynx/apidom-ns-openapi-2": "*",
|
|
275
|
-
"@speclynx/apidom-ns-openapi-3-0": "*",
|
|
276
|
-
"@speclynx/apidom-ns-openapi-3-1": "*",
|
|
277
|
-
"@speclynx/apidom-parser-adapter-api-design-systems-json": "*",
|
|
278
|
-
"@speclynx/apidom-parser-adapter-api-design-systems-yaml": "*",
|
|
279
|
-
"@speclynx/apidom-parser-adapter-arazzo-json-1": "*",
|
|
280
|
-
"@speclynx/apidom-parser-adapter-arazzo-yaml-1": "*",
|
|
281
|
-
"@speclynx/apidom-parser-adapter-asyncapi-json-2": "*",
|
|
282
|
-
"@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "*",
|
|
283
|
-
"@speclynx/apidom-parser-adapter-json": "*",
|
|
284
|
-
"@speclynx/apidom-parser-adapter-openapi-json-2": "*",
|
|
285
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-0": "*",
|
|
286
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-1": "*",
|
|
287
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-2": "*",
|
|
288
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "*",
|
|
289
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "*",
|
|
290
|
-
"@speclynx/apidom-parser-adapter-yaml-1-2": "*",
|
|
291
258
|
"axios-mock-adapter": "^2.0.0"
|
|
292
259
|
},
|
|
293
260
|
"files": [
|
|
@@ -300,5 +267,5 @@
|
|
|
300
267
|
"README.md",
|
|
301
268
|
"CHANGELOG.md"
|
|
302
269
|
],
|
|
303
|
-
"gitHead": "
|
|
270
|
+
"gitHead": "dd02cfbbe82b0a31c6e7c444cec140e740e1c6e9"
|
|
304
271
|
}
|
|
@@ -9,35 +9,39 @@ var _index3 = _interopRequireDefault(require("../resolve/strategies/openapi-3-0/
|
|
|
9
9
|
var _index4 = _interopRequireDefault(require("../resolve/strategies/openapi-3-1/index.cjs"));
|
|
10
10
|
var _index5 = _interopRequireDefault(require("../resolve/strategies/asyncapi-2/index.cjs"));
|
|
11
11
|
var _index6 = _interopRequireDefault(require("../resolve/strategies/apidom/index.cjs"));
|
|
12
|
-
var _index7 = _interopRequireDefault(require("../parse/parsers/
|
|
13
|
-
var _index8 = _interopRequireDefault(require("../parse/parsers/
|
|
14
|
-
var _index9 = _interopRequireDefault(require("../parse/parsers/openapi-json-
|
|
15
|
-
var _index0 = _interopRequireDefault(require("../parse/parsers/openapi-yaml-
|
|
16
|
-
var _index1 = _interopRequireDefault(require("../parse/parsers/openapi-json-3-
|
|
17
|
-
var _index10 = _interopRequireDefault(require("../parse/parsers/openapi-yaml-3-
|
|
18
|
-
var _index11 = _interopRequireDefault(require("../parse/parsers/
|
|
19
|
-
var _index12 = _interopRequireDefault(require("../parse/parsers/
|
|
20
|
-
var _index13 = _interopRequireDefault(require("../parse/parsers/
|
|
21
|
-
var _index14 = _interopRequireDefault(require("../parse/parsers/
|
|
22
|
-
var _index15 = _interopRequireDefault(require("../parse/parsers/
|
|
23
|
-
var _index16 = _interopRequireDefault(require("../parse/parsers/
|
|
24
|
-
var _index17 = _interopRequireDefault(require("../parse/parsers/
|
|
25
|
-
var _index18 = _interopRequireDefault(require("../parse/parsers/json/index.cjs"));
|
|
26
|
-
var _index19 = _interopRequireDefault(require("../parse/parsers/yaml-1-2/index.cjs"));
|
|
12
|
+
var _index7 = _interopRequireDefault(require("../parse/parsers/openapi-json-2/index.cjs"));
|
|
13
|
+
var _index8 = _interopRequireDefault(require("../parse/parsers/openapi-yaml-2/index.cjs"));
|
|
14
|
+
var _index9 = _interopRequireDefault(require("../parse/parsers/openapi-json-3-0/index.cjs"));
|
|
15
|
+
var _index0 = _interopRequireDefault(require("../parse/parsers/openapi-yaml-3-0/index.cjs"));
|
|
16
|
+
var _index1 = _interopRequireDefault(require("../parse/parsers/openapi-json-3-1/index.cjs"));
|
|
17
|
+
var _index10 = _interopRequireDefault(require("../parse/parsers/openapi-yaml-3-1/index.cjs"));
|
|
18
|
+
var _index11 = _interopRequireDefault(require("../parse/parsers/asyncapi-json-2/index.cjs"));
|
|
19
|
+
var _index12 = _interopRequireDefault(require("../parse/parsers/asyncapi-yaml-2/index.cjs"));
|
|
20
|
+
var _index13 = _interopRequireDefault(require("../parse/parsers/arazzo-json-1/index.cjs"));
|
|
21
|
+
var _index14 = _interopRequireDefault(require("../parse/parsers/arazzo-yaml-1/index.cjs"));
|
|
22
|
+
var _index15 = _interopRequireDefault(require("../parse/parsers/apidom-json/index.cjs"));
|
|
23
|
+
var _index16 = _interopRequireDefault(require("../parse/parsers/json/index.cjs"));
|
|
24
|
+
var _index17 = _interopRequireDefault(require("../parse/parsers/yaml-1-2/index.cjs"));
|
|
27
25
|
var _indexNode2 = _interopRequireDefault(require("../parse/parsers/binary/index-node.cjs"));
|
|
28
|
-
var
|
|
29
|
-
var
|
|
30
|
-
var
|
|
31
|
-
var
|
|
32
|
-
var
|
|
33
|
-
var
|
|
34
|
-
var
|
|
35
|
-
Object.keys(
|
|
26
|
+
var _index18 = _interopRequireDefault(require("../dereference/strategies/apidom/index.cjs"));
|
|
27
|
+
var _index19 = _interopRequireDefault(require("../dereference/strategies/openapi-2/index.cjs"));
|
|
28
|
+
var _index20 = _interopRequireDefault(require("../dereference/strategies/openapi-3-0/index.cjs"));
|
|
29
|
+
var _index21 = _interopRequireDefault(require("../dereference/strategies/openapi-3-1/index.cjs"));
|
|
30
|
+
var _index22 = _interopRequireDefault(require("../dereference/strategies/asyncapi-2/index.cjs"));
|
|
31
|
+
var _index23 = _interopRequireDefault(require("../bundle/strategies/openapi-3-1/index.cjs"));
|
|
32
|
+
var _index24 = require("../index.cjs");
|
|
33
|
+
Object.keys(_index24).forEach(function (key) {
|
|
36
34
|
if (key === "default" || key === "__esModule") return;
|
|
37
|
-
if (key in exports && exports[key] ===
|
|
38
|
-
exports[key] =
|
|
35
|
+
if (key in exports && exports[key] === _index24[key]) return;
|
|
36
|
+
exports[key] = _index24[key];
|
|
39
37
|
});
|
|
40
|
-
|
|
38
|
+
_index24.options.parse.parsers = [new _index7.default({
|
|
39
|
+
allowEmpty: true,
|
|
40
|
+
sourceMap: false
|
|
41
|
+
}), new _index8.default({
|
|
42
|
+
allowEmpty: true,
|
|
43
|
+
sourceMap: false
|
|
44
|
+
}), new _index9.default({
|
|
41
45
|
allowEmpty: true,
|
|
42
46
|
sourceMap: false
|
|
43
47
|
}), new _index0.default({
|
|
@@ -67,29 +71,17 @@ _index26.options.parse.parsers = [new _index9.default({
|
|
|
67
71
|
}), new _index16.default({
|
|
68
72
|
allowEmpty: true,
|
|
69
73
|
sourceMap: false
|
|
70
|
-
}), new _index7.default({
|
|
71
|
-
allowEmpty: true,
|
|
72
|
-
sourceMap: false
|
|
73
|
-
}), new _index8.default({
|
|
74
|
-
allowEmpty: true,
|
|
75
|
-
sourceMap: false
|
|
76
74
|
}), new _index17.default({
|
|
77
75
|
allowEmpty: true,
|
|
78
76
|
sourceMap: false
|
|
79
|
-
}), new _index18.default({
|
|
80
|
-
allowEmpty: true,
|
|
81
|
-
sourceMap: false
|
|
82
|
-
}), new _index19.default({
|
|
83
|
-
allowEmpty: true,
|
|
84
|
-
sourceMap: false
|
|
85
77
|
}), new _indexNode2.default({
|
|
86
78
|
allowEmpty: true
|
|
87
79
|
})];
|
|
88
|
-
|
|
80
|
+
_index24.options.resolve.resolvers = [new _indexNode.default(), new _index.default({
|
|
89
81
|
timeout: 5000,
|
|
90
82
|
redirects: 5,
|
|
91
83
|
withCredentials: false
|
|
92
84
|
})];
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
_index24.options.resolve.strategies = [new _index2.default(), new _index3.default(), new _index4.default(), new _index5.default(), new _index6.default()];
|
|
86
|
+
_index24.options.dereference.strategies = [new _index19.default(), new _index20.default(), new _index21.default(), new _index22.default(), new _index18.default()];
|
|
87
|
+
_index24.options.bundle.strategies = [new _index23.default()];
|
|
@@ -5,8 +5,6 @@ import OpenAPI3_0ResolveStrategy from "../resolve/strategies/openapi-3-0/index.m
|
|
|
5
5
|
import OpenAPI3_1ResolveStrategy from "../resolve/strategies/openapi-3-1/index.mjs";
|
|
6
6
|
import AsyncAPI2ResolveStrategy from "../resolve/strategies/asyncapi-2/index.mjs";
|
|
7
7
|
import ApiDOMResolveStrategy from "../resolve/strategies/apidom/index.mjs";
|
|
8
|
-
import APIDesignSystemsJSONParser from "../parse/parsers/api-design-systems-json/index.mjs";
|
|
9
|
-
import APIDesignSystemsYAMLParser from "../parse/parsers/api-design-systems-yaml/index.mjs";
|
|
10
8
|
import OpenAPIJSON2Parser from "../parse/parsers/openapi-json-2/index.mjs";
|
|
11
9
|
import OpenAPIYAML2Parser from "../parse/parsers/openapi-yaml-2/index.mjs";
|
|
12
10
|
import OpenAPIJSON3_0Parser from "../parse/parsers/openapi-json-3-0/index.mjs";
|
|
@@ -58,12 +56,6 @@ options.parse.parsers = [new OpenAPIJSON2Parser({
|
|
|
58
56
|
}), new ArazzoYAML1Parser({
|
|
59
57
|
allowEmpty: true,
|
|
60
58
|
sourceMap: false
|
|
61
|
-
}), new APIDesignSystemsJSONParser({
|
|
62
|
-
allowEmpty: true,
|
|
63
|
-
sourceMap: false
|
|
64
|
-
}), new APIDesignSystemsYAMLParser({
|
|
65
|
-
allowEmpty: true,
|
|
66
|
-
sourceMap: false
|
|
67
59
|
}), new APIDOMJSONParser({
|
|
68
60
|
allowEmpty: true,
|
|
69
61
|
sourceMap: false
|
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
6
|
exports.dereferenceApiDOM = exports.default = void 0;
|
|
7
7
|
var _ramda = require("ramda");
|
|
8
|
-
var
|
|
8
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
9
9
|
var _File = _interopRequireDefault(require("../File.cjs"));
|
|
10
10
|
var plugins = _interopRequireWildcard(require("../util/plugins.cjs"));
|
|
11
11
|
var _UnmatchedDereferenceStrategyError = _interopRequireDefault(require("../errors/UnmatchedDereferenceStrategyError.cjs"));
|
|
@@ -22,10 +22,10 @@ const dereferenceApiDOM = async (element, options) => {
|
|
|
22
22
|
let surrogateWrapping = false;
|
|
23
23
|
|
|
24
24
|
// wrap element into parse result
|
|
25
|
-
if (!(0,
|
|
26
|
-
const elementClone = (0,
|
|
25
|
+
if (!(0, _apidomDatamodel.isParseResultElement)(element)) {
|
|
26
|
+
const elementClone = (0, _apidomDatamodel.cloneShallow)(element);
|
|
27
27
|
elementClone.classes.push('result');
|
|
28
|
-
parseResult = new
|
|
28
|
+
parseResult = new _apidomDatamodel.ParseResultElement([elementClone]);
|
|
29
29
|
surrogateWrapping = true;
|
|
30
30
|
}
|
|
31
31
|
const file = new _File.default({
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isEmpty, propEq } from 'ramda';
|
|
2
|
-
import { isParseResultElement, ParseResultElement, cloneShallow } from '@speclynx/apidom-
|
|
2
|
+
import { isParseResultElement, ParseResultElement, cloneShallow } from '@speclynx/apidom-datamodel';
|
|
3
3
|
import File from "../File.mjs";
|
|
4
4
|
import * as plugins from "../util/plugins.mjs";
|
|
5
5
|
import UnmatchedDereferenceStrategyError from "../errors/UnmatchedDereferenceStrategyError.mjs";
|
|
@@ -3,15 +3,13 @@
|
|
|
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
|
+
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
7
8
|
var _DereferenceStrategy = _interopRequireDefault(require("../DereferenceStrategy.cjs"));
|
|
8
9
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
9
10
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
10
11
|
var _visitor = _interopRequireDefault(require("./visitor.cjs"));
|
|
11
12
|
exports.ApiDOMDereferenceVisitor = _visitor.default;
|
|
12
|
-
// @ts-ignore
|
|
13
|
-
const visitAsync = _apidomCore.visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
14
|
-
|
|
15
13
|
/**
|
|
16
14
|
* @public
|
|
17
15
|
*/
|
|
@@ -27,7 +25,7 @@ class ApiDOMDereferenceStrategy extends _DereferenceStrategy.default {
|
|
|
27
25
|
});
|
|
28
26
|
}
|
|
29
27
|
canDereference(file) {
|
|
30
|
-
return file.mediaType.startsWith('application/vnd.apidom') && (0,
|
|
28
|
+
return file.mediaType.startsWith('application/vnd.apidom') && (0, _apidomDatamodel.isElement)(file.parseResult?.result);
|
|
31
29
|
}
|
|
32
30
|
async dereference(file, options) {
|
|
33
31
|
const immutableRefSet = options.dereference.refSet ?? new _ReferenceSet.default();
|
|
@@ -54,7 +52,7 @@ class ApiDOMDereferenceStrategy extends _DereferenceStrategy.default {
|
|
|
54
52
|
if (options.dereference.immutable) {
|
|
55
53
|
immutableRefSet.refs.map(ref => new _Reference.default({
|
|
56
54
|
...ref,
|
|
57
|
-
value: (0,
|
|
55
|
+
value: (0, _apidomDatamodel.cloneDeep)(ref.value)
|
|
58
56
|
})).forEach(ref => mutableRefSet.add(ref));
|
|
59
57
|
reference = mutableRefSet.find(ref => ref.uri === file.uri);
|
|
60
58
|
refSet = mutableRefSet;
|
|
@@ -63,7 +61,9 @@ class ApiDOMDereferenceStrategy extends _DereferenceStrategy.default {
|
|
|
63
61
|
reference: reference,
|
|
64
62
|
options
|
|
65
63
|
});
|
|
66
|
-
const dereferencedElement = await
|
|
64
|
+
const dereferencedElement = await (0, _apidomTraverse.traverseAsync)(refSet.rootRef.value, visitor, {
|
|
65
|
+
mutable: true
|
|
66
|
+
});
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
69
|
* If immutable option is set, replay refs from the refSet.
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import { isElement, cloneDeep
|
|
1
|
+
import { isElement, cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
|
+
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
2
3
|
import DereferenceStrategy from "../DereferenceStrategy.mjs";
|
|
3
4
|
import Reference from "../../../Reference.mjs";
|
|
4
5
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
5
6
|
import ApiDOMDereferenceVisitor from "./visitor.mjs";
|
|
6
|
-
// @ts-ignore
|
|
7
|
-
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
8
|
-
|
|
9
7
|
/**
|
|
10
8
|
* @public
|
|
11
9
|
*/
|
|
12
|
-
|
|
13
10
|
/**
|
|
14
11
|
* @public
|
|
15
12
|
*/
|
|
@@ -57,7 +54,9 @@ class ApiDOMDereferenceStrategy extends DereferenceStrategy {
|
|
|
57
54
|
reference: reference,
|
|
58
55
|
options
|
|
59
56
|
});
|
|
60
|
-
const dereferencedElement = await
|
|
57
|
+
const dereferencedElement = await traverseAsync(refSet.rootRef.value, visitor, {
|
|
58
|
+
mutable: true
|
|
59
|
+
});
|
|
61
60
|
|
|
62
61
|
/**
|
|
63
62
|
* If immutable option is set, replay refs from the refSet.
|
|
@@ -4,10 +4,12 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
4
4
|
exports.__esModule = true;
|
|
5
5
|
exports.evaluate = void 0;
|
|
6
6
|
var _ramdaAdjunct = require("ramda-adjunct");
|
|
7
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
7
8
|
var _apidomCore = require("@speclynx/apidom-core");
|
|
9
|
+
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
8
10
|
var _EvaluationElementIdError = _interopRequireDefault(require("../../../../errors/EvaluationElementIdError.cjs"));
|
|
9
11
|
exports.EvaluationElementIdError = _EvaluationElementIdError.default;
|
|
10
|
-
const hasElementID = element =>
|
|
12
|
+
const hasElementID = element => element.hasMetaProperty('id') && (0, _apidomDatamodel.isStringElement)(element.meta.id);
|
|
11
13
|
|
|
12
14
|
/**
|
|
13
15
|
* Evaluates element ID against ApiDOM fragment.
|
|
@@ -19,7 +21,7 @@ const evaluate = (elementID, element) => {
|
|
|
19
21
|
} = evaluate;
|
|
20
22
|
// warm the cache
|
|
21
23
|
if (!cache.has(element)) {
|
|
22
|
-
const elementsWithID = (0,
|
|
24
|
+
const elementsWithID = (0, _apidomTraverse.filter)(element, hasElementID);
|
|
23
25
|
cache.set(element, Array.from(elementsWithID));
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { isUndefined } from 'ramda-adjunct';
|
|
2
|
-
import {
|
|
2
|
+
import { isStringElement } from '@speclynx/apidom-datamodel';
|
|
3
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
4
|
+
import { filter } from '@speclynx/apidom-traverse';
|
|
3
5
|
import EvaluationElementIdError from "../../../../errors/EvaluationElementIdError.mjs";
|
|
4
|
-
const hasElementID = element =>
|
|
6
|
+
const hasElementID = element => element.hasMetaProperty('id') && isStringElement(element.meta.id);
|
|
5
7
|
|
|
6
8
|
/**
|
|
7
9
|
* Evaluates element ID against ApiDOM fragment.
|
|
@@ -13,7 +15,7 @@ export const evaluate = (elementID, element) => {
|
|
|
13
15
|
} = evaluate;
|
|
14
16
|
// warm the cache
|
|
15
17
|
if (!cache.has(element)) {
|
|
16
|
-
const elementsWithID = filter(
|
|
18
|
+
const elementsWithID = filter(element, hasElementID);
|
|
17
19
|
cache.set(element, Array.from(elementsWithID));
|
|
18
20
|
}
|
|
19
21
|
|
|
@@ -6,16 +6,15 @@ exports.__esModule = true;
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
var _ramda = require("ramda");
|
|
8
8
|
var _apidomError = require("@speclynx/apidom-error");
|
|
9
|
+
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
9
10
|
var _apidomCore = require("@speclynx/apidom-core");
|
|
11
|
+
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
10
12
|
var _apidomJsonPointer = require("@speclynx/apidom-json-pointer");
|
|
11
13
|
var _MaximumResolveDepthError = _interopRequireDefault(require("../../../errors/MaximumResolveDepthError.cjs"));
|
|
12
14
|
var url = _interopRequireWildcard(require("../../../util/url.cjs"));
|
|
13
15
|
var _index = _interopRequireDefault(require("../../../parse/index.cjs"));
|
|
14
16
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
15
17
|
var _elementId = require("./selectors/element-id.cjs");
|
|
16
|
-
// @ts-ignore
|
|
17
|
-
const visitAsync = _apidomCore.visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
18
|
-
|
|
19
18
|
/**
|
|
20
19
|
* The following rules apply:
|
|
21
20
|
*
|
|
@@ -71,7 +70,7 @@ class ApiDOMDereferenceVisitor {
|
|
|
71
70
|
// register new mutable reference with a refSet
|
|
72
71
|
const mutableReference = new _Reference.default({
|
|
73
72
|
uri: baseURI,
|
|
74
|
-
value: (0,
|
|
73
|
+
value: (0, _apidomDatamodel.cloneDeep)(parseResult),
|
|
75
74
|
depth: this.reference.depth + 1
|
|
76
75
|
});
|
|
77
76
|
refSet.add(mutableReference);
|
|
@@ -86,7 +85,13 @@ class ApiDOMDereferenceVisitor {
|
|
|
86
85
|
}
|
|
87
86
|
return mutableReference;
|
|
88
87
|
}
|
|
89
|
-
async RefElement(
|
|
88
|
+
async RefElement(path) {
|
|
89
|
+
const refElement = path.node;
|
|
90
|
+
const {
|
|
91
|
+
parent,
|
|
92
|
+
key
|
|
93
|
+
} = path;
|
|
94
|
+
const ancestors = path.getAncestorNodes();
|
|
90
95
|
const refURI = (0, _apidomCore.toValue)(refElement);
|
|
91
96
|
const refNormalizedURI = refURI.includes('#') ? refURI : `#${refURI}`;
|
|
92
97
|
const retrievalURI = this.toBaseURI(refNormalizedURI);
|
|
@@ -96,24 +101,26 @@ class ApiDOMDereferenceVisitor {
|
|
|
96
101
|
// ignore resolving internal RefElements
|
|
97
102
|
if (!this.options.resolve.internal && isInternalReference) {
|
|
98
103
|
// skip traversing this ref element
|
|
99
|
-
|
|
104
|
+
path.skip();
|
|
105
|
+
return;
|
|
100
106
|
}
|
|
101
107
|
// ignore resolving external RefElements
|
|
102
108
|
if (!this.options.resolve.external && isExternalReference) {
|
|
103
109
|
// skip traversing this ref element
|
|
104
|
-
|
|
110
|
+
path.skip();
|
|
111
|
+
return;
|
|
105
112
|
}
|
|
106
113
|
const reference = await this.toReference(refNormalizedURI);
|
|
107
114
|
const refBaseURI = url.resolve(retrievalURI, refNormalizedURI);
|
|
108
115
|
const elementID = _apidomJsonPointer.URIFragmentIdentifier.fromURIReference(refBaseURI);
|
|
109
116
|
let referencedElement = (0, _elementId.evaluate)(elementID, reference.value.result);
|
|
110
|
-
if (!(0,
|
|
117
|
+
if (!(0, _apidomDatamodel.isElement)(referencedElement)) {
|
|
111
118
|
throw new _apidomError.ApiDOMError(`Referenced element with id="${elementID}" was not found`);
|
|
112
119
|
}
|
|
113
120
|
if (refElement === referencedElement) {
|
|
114
121
|
throw new _apidomError.ApiDOMError('RefElement cannot reference itself');
|
|
115
122
|
}
|
|
116
|
-
if ((0,
|
|
123
|
+
if ((0, _apidomDatamodel.isRefElement)(referencedElement)) {
|
|
117
124
|
throw new _apidomError.ApiDOMError('RefElement cannot reference another RefElement');
|
|
118
125
|
}
|
|
119
126
|
if (isExternalReference) {
|
|
@@ -122,33 +129,38 @@ class ApiDOMDereferenceVisitor {
|
|
|
122
129
|
reference,
|
|
123
130
|
options: this.options
|
|
124
131
|
});
|
|
125
|
-
referencedElement = await
|
|
132
|
+
referencedElement = await (0, _apidomTraverse.traverseAsync)(referencedElement, visitor, {
|
|
133
|
+
mutable: true
|
|
134
|
+
});
|
|
126
135
|
}
|
|
127
136
|
|
|
128
137
|
/**
|
|
129
|
-
* When path is used, it references the given property of the referenced element
|
|
138
|
+
* When path is used, it references the given property of the referenced element.
|
|
139
|
+
* Valid paths are: 'element', 'content', 'meta', 'attributes'.
|
|
130
140
|
*/
|
|
131
141
|
const referencedElementPath = (0, _apidomCore.toValue)(refElement.path);
|
|
132
|
-
if (referencedElementPath !== 'element' && (0,
|
|
133
|
-
referencedElement = (0,
|
|
142
|
+
if (referencedElementPath !== 'element' && (0, _apidomDatamodel.isElement)(referencedElement)) {
|
|
143
|
+
referencedElement = (0, _apidomDatamodel.refract)(referencedElement[referencedElementPath]);
|
|
134
144
|
}
|
|
135
145
|
|
|
136
146
|
/**
|
|
137
147
|
* Transclusion of a Ref Element SHALL be defined in the if/else block below.
|
|
138
148
|
*/
|
|
139
|
-
|
|
149
|
+
// ancestors[0] is the grandparent (nearest ancestor from getAncestorNodes())
|
|
150
|
+
const grandparent = ancestors[0];
|
|
151
|
+
if ((0, _apidomDatamodel.isObjectElement)(referencedElement) && (0, _apidomDatamodel.isObjectElement)(grandparent) && Array.isArray(parent) && typeof key === 'number') {
|
|
140
152
|
/**
|
|
141
153
|
* If the Ref Element is held by an Object Element and references an Object Element,
|
|
142
154
|
* its content entries SHALL be inserted in place of the Ref Element.
|
|
143
155
|
*/
|
|
144
156
|
parent.splice(key, 1, ...referencedElement.content);
|
|
145
|
-
} else if ((0,
|
|
157
|
+
} else if ((0, _apidomDatamodel.isArrayElement)(referencedElement) && Array.isArray(parent) && typeof key === 'number') {
|
|
146
158
|
/**
|
|
147
159
|
* If the Ref Element is held by an Array Element and references an Array Element,
|
|
148
160
|
* its content entries SHALL be inserted in place of the Ref Element.
|
|
149
161
|
*/
|
|
150
162
|
parent.splice(key, 1, ...referencedElement.content);
|
|
151
|
-
} else if ((0,
|
|
163
|
+
} else if ((0, _apidomDatamodel.isMemberElement)(parent)) {
|
|
152
164
|
/**
|
|
153
165
|
* The Ref Element is substituted by the Element it references.
|
|
154
166
|
*/
|
|
@@ -159,7 +171,9 @@ class ApiDOMDereferenceVisitor {
|
|
|
159
171
|
*/
|
|
160
172
|
parent[key] = referencedElement;
|
|
161
173
|
}
|
|
162
|
-
|
|
174
|
+
if (!parent) {
|
|
175
|
+
path.replaceWith(referencedElement);
|
|
176
|
+
}
|
|
163
177
|
}
|
|
164
178
|
}
|
|
165
179
|
var _default = exports.default = ApiDOMDereferenceVisitor;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { propEq } from 'ramda';
|
|
2
2
|
import { ApiDOMError } from '@speclynx/apidom-error';
|
|
3
|
-
import { isElement, isMemberElement, isArrayElement, isObjectElement, isRefElement,
|
|
3
|
+
import { isElement, isMemberElement, isArrayElement, isObjectElement, isRefElement, refract, cloneDeep } from '@speclynx/apidom-datamodel';
|
|
4
|
+
import { toValue } from '@speclynx/apidom-core';
|
|
5
|
+
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
4
6
|
import { URIFragmentIdentifier } from '@speclynx/apidom-json-pointer';
|
|
5
7
|
import MaximumResolveDepthError from "../../../errors/MaximumResolveDepthError.mjs";
|
|
6
8
|
import * as url from "../../../util/url.mjs";
|
|
7
9
|
import parse from "../../../parse/index.mjs";
|
|
8
10
|
import Reference from "../../../Reference.mjs";
|
|
9
11
|
import { evaluate } from "./selectors/element-id.mjs";
|
|
10
|
-
// @ts-ignore
|
|
11
|
-
const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
12
|
-
|
|
13
12
|
/**
|
|
14
13
|
* The following rules apply:
|
|
15
14
|
*
|
|
@@ -23,7 +22,6 @@ const visitAsync = visit[Symbol.for('nodejs.util.promisify.custom')];
|
|
|
23
22
|
* WARNING: this implementation only supports referencing elements in the local document. Points 2-4 are not supported.
|
|
24
23
|
* @public
|
|
25
24
|
*/
|
|
26
|
-
|
|
27
25
|
/**
|
|
28
26
|
* @public
|
|
29
27
|
*/
|
|
@@ -80,7 +78,13 @@ class ApiDOMDereferenceVisitor {
|
|
|
80
78
|
}
|
|
81
79
|
return mutableReference;
|
|
82
80
|
}
|
|
83
|
-
async RefElement(
|
|
81
|
+
async RefElement(path) {
|
|
82
|
+
const refElement = path.node;
|
|
83
|
+
const {
|
|
84
|
+
parent,
|
|
85
|
+
key
|
|
86
|
+
} = path;
|
|
87
|
+
const ancestors = path.getAncestorNodes();
|
|
84
88
|
const refURI = toValue(refElement);
|
|
85
89
|
const refNormalizedURI = refURI.includes('#') ? refURI : `#${refURI}`;
|
|
86
90
|
const retrievalURI = this.toBaseURI(refNormalizedURI);
|
|
@@ -90,12 +94,14 @@ class ApiDOMDereferenceVisitor {
|
|
|
90
94
|
// ignore resolving internal RefElements
|
|
91
95
|
if (!this.options.resolve.internal && isInternalReference) {
|
|
92
96
|
// skip traversing this ref element
|
|
93
|
-
|
|
97
|
+
path.skip();
|
|
98
|
+
return;
|
|
94
99
|
}
|
|
95
100
|
// ignore resolving external RefElements
|
|
96
101
|
if (!this.options.resolve.external && isExternalReference) {
|
|
97
102
|
// skip traversing this ref element
|
|
98
|
-
|
|
103
|
+
path.skip();
|
|
104
|
+
return;
|
|
99
105
|
}
|
|
100
106
|
const reference = await this.toReference(refNormalizedURI);
|
|
101
107
|
const refBaseURI = url.resolve(retrievalURI, refNormalizedURI);
|
|
@@ -116,11 +122,14 @@ class ApiDOMDereferenceVisitor {
|
|
|
116
122
|
reference,
|
|
117
123
|
options: this.options
|
|
118
124
|
});
|
|
119
|
-
referencedElement = await
|
|
125
|
+
referencedElement = await traverseAsync(referencedElement, visitor, {
|
|
126
|
+
mutable: true
|
|
127
|
+
});
|
|
120
128
|
}
|
|
121
129
|
|
|
122
130
|
/**
|
|
123
|
-
* When path is used, it references the given property of the referenced element
|
|
131
|
+
* When path is used, it references the given property of the referenced element.
|
|
132
|
+
* Valid paths are: 'element', 'content', 'meta', 'attributes'.
|
|
124
133
|
*/
|
|
125
134
|
const referencedElementPath = toValue(refElement.path);
|
|
126
135
|
if (referencedElementPath !== 'element' && isElement(referencedElement)) {
|
|
@@ -130,7 +139,9 @@ class ApiDOMDereferenceVisitor {
|
|
|
130
139
|
/**
|
|
131
140
|
* Transclusion of a Ref Element SHALL be defined in the if/else block below.
|
|
132
141
|
*/
|
|
133
|
-
|
|
142
|
+
// ancestors[0] is the grandparent (nearest ancestor from getAncestorNodes())
|
|
143
|
+
const grandparent = ancestors[0];
|
|
144
|
+
if (isObjectElement(referencedElement) && isObjectElement(grandparent) && Array.isArray(parent) && typeof key === 'number') {
|
|
134
145
|
/**
|
|
135
146
|
* If the Ref Element is held by an Object Element and references an Object Element,
|
|
136
147
|
* its content entries SHALL be inserted in place of the Ref Element.
|
|
@@ -153,7 +164,9 @@ class ApiDOMDereferenceVisitor {
|
|
|
153
164
|
*/
|
|
154
165
|
parent[key] = referencedElement;
|
|
155
166
|
}
|
|
156
|
-
|
|
167
|
+
if (!parent) {
|
|
168
|
+
path.replaceWith(referencedElement);
|
|
169
|
+
}
|
|
157
170
|
}
|
|
158
171
|
}
|
|
159
172
|
export default ApiDOMDereferenceVisitor;
|