@speclynx/apidom-reference 6.1.2 → 7.0.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 +63 -0
- package/README.md +57 -0
- package/dist/apidom-reference.browser.js +5783 -3741
- package/dist/apidom-reference.browser.min.js +1 -1
- package/package.json +31 -30
- package/src/File.cjs +5 -2
- package/src/File.mjs +5 -2
- package/src/bundle/index.cjs +6 -4
- package/src/bundle/index.mjs +6 -4
- package/src/bundle/strategies/arazzo-1/index.cjs +3 -2
- package/src/bundle/strategies/arazzo-1/index.mjs +3 -2
- package/src/bundle/strategies/asyncapi-2/index.cjs +3 -2
- package/src/bundle/strategies/asyncapi-2/index.mjs +3 -2
- package/src/bundle/strategies/openapi-2/index.cjs +3 -2
- package/src/bundle/strategies/openapi-2/index.mjs +3 -2
- package/src/bundle/strategies/openapi-3-0/index.cjs +3 -2
- package/src/bundle/strategies/openapi-3-0/index.mjs +3 -2
- package/src/bundle/strategies/openapi-3-1/index.cjs +3 -2
- package/src/bundle/strategies/openapi-3-1/index.mjs +3 -2
- package/src/dereference/index.cjs +8 -5
- package/src/dereference/index.mjs +8 -5
- package/src/dereference/strategies/DereferenceVisitor.cjs +588 -0
- package/src/dereference/strategies/DereferenceVisitor.mjs +580 -0
- package/src/dereference/strategies/arazzo-1/index.cjs +14 -39
- package/src/dereference/strategies/arazzo-1/index.mjs +15 -40
- package/src/dereference/strategies/arazzo-1/visitor.cjs +207 -331
- package/src/dereference/strategies/arazzo-1/visitor.mjs +215 -338
- package/src/dereference/strategies/asyncapi-2/index.cjs +11 -39
- package/src/dereference/strategies/asyncapi-2/index.mjs +11 -39
- package/src/dereference/strategies/asyncapi-2/visitor.cjs +133 -425
- package/src/dereference/strategies/asyncapi-2/visitor.mjs +137 -429
- package/src/dereference/strategies/openapi-2/index.cjs +12 -42
- package/src/dereference/strategies/openapi-2/index.mjs +12 -42
- package/src/dereference/strategies/openapi-2/visitor.cjs +168 -532
- package/src/dereference/strategies/openapi-2/visitor.mjs +172 -536
- package/src/dereference/strategies/openapi-3-0/index.cjs +12 -42
- package/src/dereference/strategies/openapi-3-0/index.mjs +12 -42
- package/src/dereference/strategies/openapi-3-0/visitor.cjs +194 -468
- package/src/dereference/strategies/openapi-3-0/visitor.mjs +199 -473
- package/src/dereference/strategies/openapi-3-1/index.cjs +16 -42
- package/src/dereference/strategies/openapi-3-1/index.mjs +16 -42
- package/src/dereference/strategies/openapi-3-1/visitor.cjs +350 -602
- package/src/dereference/strategies/openapi-3-1/visitor.mjs +357 -608
- package/src/dereference/strategies/overlay-1/index.cjs +3 -2
- package/src/dereference/strategies/overlay-1/index.mjs +3 -2
- package/src/index.cjs +0 -7
- package/src/index.mjs +0 -1
- package/src/options/index.cjs +4 -0
- package/src/options/index.mjs +4 -0
- package/src/options/util.cjs +7 -1
- package/src/options/util.mjs +8 -2
- package/src/parse/index.cjs +9 -1
- package/src/parse/index.mjs +9 -1
- package/src/parse/parsers/apidom-json/index.cjs +2 -1
- package/src/parse/parsers/apidom-json/index.mjs +2 -1
- package/src/parse/parsers/arazzo-json-1/index.cjs +2 -1
- package/src/parse/parsers/arazzo-json-1/index.mjs +2 -1
- package/src/parse/parsers/arazzo-yaml-1/index.cjs +2 -1
- package/src/parse/parsers/arazzo-yaml-1/index.mjs +2 -1
- package/src/parse/parsers/asyncapi-json-2/index.cjs +2 -1
- package/src/parse/parsers/asyncapi-json-2/index.mjs +2 -1
- package/src/parse/parsers/asyncapi-yaml-2/index.cjs +2 -1
- package/src/parse/parsers/asyncapi-yaml-2/index.mjs +2 -1
- package/src/parse/parsers/json/index.cjs +2 -1
- package/src/parse/parsers/json/index.mjs +2 -1
- package/src/parse/parsers/openapi-json-2/index.cjs +2 -1
- package/src/parse/parsers/openapi-json-2/index.mjs +2 -1
- package/src/parse/parsers/openapi-json-3-0/index.cjs +2 -1
- package/src/parse/parsers/openapi-json-3-0/index.mjs +2 -1
- package/src/parse/parsers/openapi-json-3-1/index.cjs +2 -1
- package/src/parse/parsers/openapi-json-3-1/index.mjs +2 -1
- package/src/parse/parsers/openapi-yaml-2/index.cjs +2 -1
- package/src/parse/parsers/openapi-yaml-2/index.mjs +2 -1
- package/src/parse/parsers/openapi-yaml-3-0/index.cjs +2 -1
- package/src/parse/parsers/openapi-yaml-3-0/index.mjs +2 -1
- package/src/parse/parsers/openapi-yaml-3-1/index.cjs +2 -1
- package/src/parse/parsers/openapi-yaml-3-1/index.mjs +2 -1
- package/src/parse/parsers/overlay-json-1/index.cjs +2 -1
- package/src/parse/parsers/overlay-json-1/index.mjs +2 -1
- package/src/parse/parsers/overlay-yaml-1/index.cjs +2 -1
- package/src/parse/parsers/overlay-yaml-1/index.mjs +2 -1
- package/src/parse/parsers/yaml-1-2/index.cjs +2 -1
- package/src/parse/parsers/yaml-1-2/index.mjs +2 -1
- package/src/resolve/index.cjs +6 -3
- package/src/resolve/index.mjs +6 -3
- package/src/util/url.cjs +38 -8
- package/src/util/url.mjs +35 -6
- package/types/apidom-reference.d.ts +13 -9
- package/types/dereference/strategies/DereferenceVisitor.d.ts +224 -0
- package/types/dereference/strategies/arazzo-1/index.d.ts +0 -1
- package/types/dereference/strategies/arazzo-1/visitor.d.ts +38 -38
- package/types/dereference/strategies/asyncapi-2/index.d.ts +0 -1
- package/types/dereference/strategies/asyncapi-2/visitor.d.ts +13 -29
- package/types/dereference/strategies/openapi-2/index.d.ts +0 -1
- package/types/dereference/strategies/openapi-2/visitor.d.ts +14 -29
- package/types/dereference/strategies/openapi-3-0/index.d.ts +0 -1
- package/types/dereference/strategies/openapi-3-0/visitor.d.ts +13 -28
- package/types/dereference/strategies/openapi-3-1/index.d.ts +0 -1
- package/types/dereference/strategies/openapi-3-1/visitor.d.ts +37 -33
- package/types/index.d.ts +0 -1
- package/types/util/url.d.ts +11 -0
- package/LICENSES/AFL-3.0.txt +0 -182
- package/LICENSES/BSD-3-Clause.txt +0 -26
- package/src/dereference/util.cjs +0 -33
- package/src/dereference/util.mjs +0 -27
- package/types/dereference/util.d.ts +0 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@speclynx/apidom-reference",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "7.0.0",
|
|
4
4
|
"description": "Advanced algorithms for semantic ApiDOM manipulations like dereferencing or resolution.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"apidom",
|
|
@@ -299,35 +299,36 @@
|
|
|
299
299
|
"author": "Vladimir Gorej",
|
|
300
300
|
"license": "Apache-2.0",
|
|
301
301
|
"dependencies": {
|
|
302
|
-
"@babel/runtime-corejs3": "^8.0
|
|
303
|
-
"@speclynx/apidom-core": "
|
|
304
|
-
"@speclynx/apidom-datamodel": "
|
|
305
|
-
"@speclynx/apidom-error": "
|
|
306
|
-
"@speclynx/apidom-json-pointer": "
|
|
307
|
-
"@speclynx/apidom-ns-arazzo-1": "
|
|
308
|
-
"@speclynx/apidom-ns-asyncapi-2": "
|
|
309
|
-
"@speclynx/apidom-ns-json-schema-2020-12": "
|
|
310
|
-
"@speclynx/apidom-ns-openapi-2": "
|
|
311
|
-
"@speclynx/apidom-ns-openapi-3-0": "
|
|
312
|
-
"@speclynx/apidom-ns-openapi-3-1": "
|
|
313
|
-
"@speclynx/apidom-ns-overlay-1": "
|
|
314
|
-
"@speclynx/apidom-parser-adapter-arazzo-json-1": "
|
|
315
|
-
"@speclynx/apidom-parser-adapter-arazzo-yaml-1": "
|
|
316
|
-
"@speclynx/apidom-parser-adapter-asyncapi-json-2": "
|
|
317
|
-
"@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "
|
|
318
|
-
"@speclynx/apidom-parser-adapter-json": "
|
|
319
|
-
"@speclynx/apidom-parser-adapter-openapi-json-2": "
|
|
320
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-0": "
|
|
321
|
-
"@speclynx/apidom-parser-adapter-openapi-json-3-1": "
|
|
322
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-2": "
|
|
323
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "
|
|
324
|
-
"@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "
|
|
325
|
-
"@speclynx/apidom-parser-adapter-overlay-json-1": "
|
|
326
|
-
"@speclynx/apidom-parser-adapter-overlay-yaml-1": "
|
|
327
|
-
"@speclynx/apidom-parser-adapter-yaml-1-2": "
|
|
328
|
-
"@speclynx/apidom-traverse": "
|
|
302
|
+
"@babel/runtime-corejs3": "^8.1.0",
|
|
303
|
+
"@speclynx/apidom-core": "7.0.0",
|
|
304
|
+
"@speclynx/apidom-datamodel": "7.0.0",
|
|
305
|
+
"@speclynx/apidom-error": "7.0.0",
|
|
306
|
+
"@speclynx/apidom-json-pointer": "7.0.0",
|
|
307
|
+
"@speclynx/apidom-ns-arazzo-1": "7.0.0",
|
|
308
|
+
"@speclynx/apidom-ns-asyncapi-2": "7.0.0",
|
|
309
|
+
"@speclynx/apidom-ns-json-schema-2020-12": "7.0.0",
|
|
310
|
+
"@speclynx/apidom-ns-openapi-2": "7.0.0",
|
|
311
|
+
"@speclynx/apidom-ns-openapi-3-0": "7.0.0",
|
|
312
|
+
"@speclynx/apidom-ns-openapi-3-1": "7.0.0",
|
|
313
|
+
"@speclynx/apidom-ns-overlay-1": "7.0.0",
|
|
314
|
+
"@speclynx/apidom-parser-adapter-arazzo-json-1": "7.0.0",
|
|
315
|
+
"@speclynx/apidom-parser-adapter-arazzo-yaml-1": "7.0.0",
|
|
316
|
+
"@speclynx/apidom-parser-adapter-asyncapi-json-2": "7.0.0",
|
|
317
|
+
"@speclynx/apidom-parser-adapter-asyncapi-yaml-2": "7.0.0",
|
|
318
|
+
"@speclynx/apidom-parser-adapter-json": "7.0.0",
|
|
319
|
+
"@speclynx/apidom-parser-adapter-openapi-json-2": "7.0.0",
|
|
320
|
+
"@speclynx/apidom-parser-adapter-openapi-json-3-0": "7.0.0",
|
|
321
|
+
"@speclynx/apidom-parser-adapter-openapi-json-3-1": "7.0.0",
|
|
322
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-2": "7.0.0",
|
|
323
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-3-0": "7.0.0",
|
|
324
|
+
"@speclynx/apidom-parser-adapter-openapi-yaml-3-1": "7.0.0",
|
|
325
|
+
"@speclynx/apidom-parser-adapter-overlay-json-1": "7.0.0",
|
|
326
|
+
"@speclynx/apidom-parser-adapter-overlay-yaml-1": "7.0.0",
|
|
327
|
+
"@speclynx/apidom-parser-adapter-yaml-1-2": "7.0.0",
|
|
328
|
+
"@speclynx/apidom-traverse": "7.0.0",
|
|
329
329
|
"@swaggerexpert/arazzo-runtime-expression": "^3.2.0",
|
|
330
|
-
"
|
|
330
|
+
"@swaggerexpert/media-types": "^1.0.3",
|
|
331
|
+
"axios": "^1.21.0",
|
|
331
332
|
"picomatch": "^4.0.7",
|
|
332
333
|
"ramda": "~0.32.0",
|
|
333
334
|
"ramda-adjunct": "^6.1.0"
|
|
@@ -346,5 +347,5 @@
|
|
|
346
347
|
"README.md",
|
|
347
348
|
"CHANGELOG.md"
|
|
348
349
|
],
|
|
349
|
-
"gitHead": "
|
|
350
|
+
"gitHead": "40c7c9837e4fb303453cec3d633bc06ee6be1e8b"
|
|
350
351
|
}
|
package/src/File.cjs
CHANGED
|
@@ -23,12 +23,15 @@ class File {
|
|
|
23
23
|
parseResult;
|
|
24
24
|
constructor({
|
|
25
25
|
uri,
|
|
26
|
-
mediaType
|
|
26
|
+
mediaType,
|
|
27
27
|
data,
|
|
28
28
|
parseResult
|
|
29
29
|
}) {
|
|
30
30
|
this.uri = uri;
|
|
31
|
-
|
|
31
|
+
// media types are compared as Content-Type field values, which exclude surrounding whitespace;
|
|
32
|
+
// a missing or blank media type means none was given
|
|
33
|
+
const trimmedMediaType = (0, _ramdaAdjunct.isString)(mediaType) ? mediaType.trim() : '';
|
|
34
|
+
this.mediaType = trimmedMediaType === '' ? 'text/plain' : trimmedMediaType;
|
|
32
35
|
this.data = data;
|
|
33
36
|
this.parseResult = parseResult;
|
|
34
37
|
}
|
package/src/File.mjs
CHANGED
|
@@ -15,12 +15,15 @@ class File {
|
|
|
15
15
|
parseResult;
|
|
16
16
|
constructor({
|
|
17
17
|
uri,
|
|
18
|
-
mediaType
|
|
18
|
+
mediaType,
|
|
19
19
|
data,
|
|
20
20
|
parseResult
|
|
21
21
|
}) {
|
|
22
22
|
this.uri = uri;
|
|
23
|
-
|
|
23
|
+
// media types are compared as Content-Type field values, which exclude surrounding whitespace;
|
|
24
|
+
// a missing or blank media type means none was given
|
|
25
|
+
const trimmedMediaType = isString(mediaType) ? mediaType.trim() : '';
|
|
26
|
+
this.mediaType = trimmedMediaType === '' ? 'text/plain' : trimmedMediaType;
|
|
24
27
|
this.data = data;
|
|
25
28
|
this.parseResult = parseResult;
|
|
26
29
|
}
|
package/src/bundle/index.cjs
CHANGED
|
@@ -22,20 +22,22 @@ const bundle = async (uri, options) => {
|
|
|
22
22
|
const {
|
|
23
23
|
refSet
|
|
24
24
|
} = options.bundle;
|
|
25
|
-
|
|
25
|
+
// strategies look up same-document references by a resolved, hence normalized, URI;
|
|
26
|
+
// the file is parsed as a whole document, so its URI has no fragment
|
|
27
|
+
const baseURI = url.normalize(url.stripHash(uri));
|
|
26
28
|
const mergedOptions = (0, _util.merge)(options, {
|
|
27
29
|
resolve: {
|
|
28
|
-
baseURI
|
|
30
|
+
baseURI
|
|
29
31
|
}
|
|
30
32
|
});
|
|
31
33
|
let parseResult;
|
|
32
34
|
|
|
33
35
|
// if refSet was provided, use it to avoid unnecessary parsing
|
|
34
|
-
if (refSet !== null && refSet.has(
|
|
36
|
+
if (refSet !== null && refSet.has(baseURI)) {
|
|
35
37
|
// @ts-ignore
|
|
36
38
|
({
|
|
37
39
|
value: parseResult
|
|
38
|
-
} = refSet.find((0, _ramda.propEq)(
|
|
40
|
+
} = refSet.find((0, _ramda.propEq)(baseURI, 'uri')));
|
|
39
41
|
} else {
|
|
40
42
|
parseResult = await (0, _index.default)(uri, mergedOptions);
|
|
41
43
|
}
|
package/src/bundle/index.mjs
CHANGED
|
@@ -14,20 +14,22 @@ const bundle = async (uri, options) => {
|
|
|
14
14
|
const {
|
|
15
15
|
refSet
|
|
16
16
|
} = options.bundle;
|
|
17
|
-
|
|
17
|
+
// strategies look up same-document references by a resolved, hence normalized, URI;
|
|
18
|
+
// the file is parsed as a whole document, so its URI has no fragment
|
|
19
|
+
const baseURI = url.normalize(url.stripHash(uri));
|
|
18
20
|
const mergedOptions = mergeOptions(options, {
|
|
19
21
|
resolve: {
|
|
20
|
-
baseURI
|
|
22
|
+
baseURI
|
|
21
23
|
}
|
|
22
24
|
});
|
|
23
25
|
let parseResult;
|
|
24
26
|
|
|
25
27
|
// if refSet was provided, use it to avoid unnecessary parsing
|
|
26
|
-
if (refSet !== null && refSet.has(
|
|
28
|
+
if (refSet !== null && refSet.has(baseURI)) {
|
|
27
29
|
// @ts-ignore
|
|
28
30
|
({
|
|
29
31
|
value: parseResult
|
|
30
|
-
} = refSet.find(propEq(
|
|
32
|
+
} = refSet.find(propEq(baseURI, 'uri')));
|
|
31
33
|
} else {
|
|
32
34
|
parseResult = await parse(uri, mergedOptions);
|
|
33
35
|
}
|
|
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
|
14
14
|
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
15
15
|
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
16
16
|
var _apidomNsArazzo = require("@speclynx/apidom-ns-arazzo-1");
|
|
17
|
+
var _mediaTypes = require("@swaggerexpert/media-types");
|
|
17
18
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
18
19
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
19
20
|
var _BundleStrategy = _interopRequireDefault(require("../BundleStrategy.cjs"));
|
|
@@ -34,8 +35,8 @@ class Arazzo1BundleStrategy extends _BundleStrategy.default {
|
|
|
34
35
|
}
|
|
35
36
|
canBundle(file) {
|
|
36
37
|
// assert by media type
|
|
37
|
-
if (
|
|
38
|
-
return _apidomNsArazzo.mediaTypes
|
|
38
|
+
if (!(0, _mediaTypes.matches)('text/plain', file.mediaType)) {
|
|
39
|
+
return (0, _mediaTypes.selectBestMatch)(_apidomNsArazzo.mediaTypes, file.mediaType) !== null;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// assert by inspecting ApiDOM
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
3
3
|
import { mediaTypes, isArazzoSpecification1Element } from '@speclynx/apidom-ns-arazzo-1';
|
|
4
|
+
import { matches, selectBestMatch } from '@swaggerexpert/media-types';
|
|
4
5
|
import Reference from "../../../Reference.mjs";
|
|
5
6
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
6
7
|
import BundleStrategy from "../BundleStrategy.mjs";
|
|
@@ -20,8 +21,8 @@ class Arazzo1BundleStrategy extends BundleStrategy {
|
|
|
20
21
|
}
|
|
21
22
|
canBundle(file) {
|
|
22
23
|
// assert by media type
|
|
23
|
-
if (
|
|
24
|
-
return mediaTypes
|
|
24
|
+
if (!matches('text/plain', file.mediaType)) {
|
|
25
|
+
return selectBestMatch(mediaTypes, file.mediaType) !== null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
// assert by inspecting ApiDOM
|
|
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
|
14
14
|
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
15
15
|
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
16
16
|
var _apidomNsAsyncapi = require("@speclynx/apidom-ns-asyncapi-2");
|
|
17
|
+
var _mediaTypes = require("@swaggerexpert/media-types");
|
|
17
18
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
18
19
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
19
20
|
var _BundleStrategy = _interopRequireDefault(require("../BundleStrategy.cjs"));
|
|
@@ -34,8 +35,8 @@ class AsyncAPI2BundleStrategy extends _BundleStrategy.default {
|
|
|
34
35
|
}
|
|
35
36
|
canBundle(file) {
|
|
36
37
|
// assert by media type
|
|
37
|
-
if (
|
|
38
|
-
return _apidomNsAsyncapi.mediaTypes
|
|
38
|
+
if (!(0, _mediaTypes.matches)('text/plain', file.mediaType)) {
|
|
39
|
+
return (0, _mediaTypes.selectBestMatch)(_apidomNsAsyncapi.mediaTypes, file.mediaType) !== null;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// assert by inspecting ApiDOM
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
3
3
|
import { mediaTypes, isAsyncApi2Element } from '@speclynx/apidom-ns-asyncapi-2';
|
|
4
|
+
import { matches, selectBestMatch } from '@swaggerexpert/media-types';
|
|
4
5
|
import Reference from "../../../Reference.mjs";
|
|
5
6
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
6
7
|
import BundleStrategy from "../BundleStrategy.mjs";
|
|
@@ -20,8 +21,8 @@ class AsyncAPI2BundleStrategy extends BundleStrategy {
|
|
|
20
21
|
}
|
|
21
22
|
canBundle(file) {
|
|
22
23
|
// assert by media type
|
|
23
|
-
if (
|
|
24
|
-
return mediaTypes
|
|
24
|
+
if (!matches('text/plain', file.mediaType)) {
|
|
25
|
+
return selectBestMatch(mediaTypes, file.mediaType) !== null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
// assert by inspecting ApiDOM
|
|
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
|
14
14
|
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
15
15
|
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
16
16
|
var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-2");
|
|
17
|
+
var _mediaTypes = require("@swaggerexpert/media-types");
|
|
17
18
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
18
19
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
19
20
|
var _BundleStrategy = _interopRequireDefault(require("../BundleStrategy.cjs"));
|
|
@@ -34,8 +35,8 @@ class OpenAPI2BundleStrategy extends _BundleStrategy.default {
|
|
|
34
35
|
}
|
|
35
36
|
canBundle(file) {
|
|
36
37
|
// assert by media type
|
|
37
|
-
if (
|
|
38
|
-
return _apidomNsOpenapi.mediaTypes
|
|
38
|
+
if (!(0, _mediaTypes.matches)('text/plain', file.mediaType)) {
|
|
39
|
+
return (0, _mediaTypes.selectBestMatch)(_apidomNsOpenapi.mediaTypes, file.mediaType) !== null;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// assert by inspecting ApiDOM
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
3
3
|
import { mediaTypes, isSwaggerElement } from '@speclynx/apidom-ns-openapi-2';
|
|
4
|
+
import { matches, selectBestMatch } from '@swaggerexpert/media-types';
|
|
4
5
|
import Reference from "../../../Reference.mjs";
|
|
5
6
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
6
7
|
import BundleStrategy from "../BundleStrategy.mjs";
|
|
@@ -20,8 +21,8 @@ class OpenAPI2BundleStrategy extends BundleStrategy {
|
|
|
20
21
|
}
|
|
21
22
|
canBundle(file) {
|
|
22
23
|
// assert by media type
|
|
23
|
-
if (
|
|
24
|
-
return mediaTypes
|
|
24
|
+
if (!matches('text/plain', file.mediaType)) {
|
|
25
|
+
return selectBestMatch(mediaTypes, file.mediaType) !== null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
// assert by inspecting ApiDOM
|
|
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
|
14
14
|
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
15
15
|
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
16
16
|
var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-0");
|
|
17
|
+
var _mediaTypes = require("@swaggerexpert/media-types");
|
|
17
18
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
18
19
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
19
20
|
var _BundleStrategy = _interopRequireDefault(require("../BundleStrategy.cjs"));
|
|
@@ -34,8 +35,8 @@ class OpenAPI3_0BundleStrategy extends _BundleStrategy.default {
|
|
|
34
35
|
}
|
|
35
36
|
canBundle(file) {
|
|
36
37
|
// assert by media type
|
|
37
|
-
if (
|
|
38
|
-
return _apidomNsOpenapi.mediaTypes
|
|
38
|
+
if (!(0, _mediaTypes.matches)('text/plain', file.mediaType)) {
|
|
39
|
+
return (0, _mediaTypes.selectBestMatch)(_apidomNsOpenapi.mediaTypes, file.mediaType) !== null;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// assert by inspecting ApiDOM
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
3
3
|
import { mediaTypes, isOpenApi3_0Element } from '@speclynx/apidom-ns-openapi-3-0';
|
|
4
|
+
import { matches, selectBestMatch } from '@swaggerexpert/media-types';
|
|
4
5
|
import Reference from "../../../Reference.mjs";
|
|
5
6
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
6
7
|
import BundleStrategy from "../BundleStrategy.mjs";
|
|
@@ -20,8 +21,8 @@ class OpenAPI3_0BundleStrategy extends BundleStrategy {
|
|
|
20
21
|
}
|
|
21
22
|
canBundle(file) {
|
|
22
23
|
// assert by media type
|
|
23
|
-
if (
|
|
24
|
-
return mediaTypes
|
|
24
|
+
if (!matches('text/plain', file.mediaType)) {
|
|
25
|
+
return selectBestMatch(mediaTypes, file.mediaType) !== null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
// assert by inspecting ApiDOM
|
|
@@ -14,6 +14,7 @@ exports.default = void 0;
|
|
|
14
14
|
var _apidomDatamodel = require("@speclynx/apidom-datamodel");
|
|
15
15
|
var _apidomTraverse = require("@speclynx/apidom-traverse");
|
|
16
16
|
var _apidomNsOpenapi = require("@speclynx/apidom-ns-openapi-3-1");
|
|
17
|
+
var _mediaTypes = require("@swaggerexpert/media-types");
|
|
17
18
|
var _Reference = _interopRequireDefault(require("../../../Reference.cjs"));
|
|
18
19
|
var _ReferenceSet = _interopRequireDefault(require("../../../ReferenceSet.cjs"));
|
|
19
20
|
var _BundleStrategy = _interopRequireDefault(require("../BundleStrategy.cjs"));
|
|
@@ -34,8 +35,8 @@ class OpenAPI3_1BundleStrategy extends _BundleStrategy.default {
|
|
|
34
35
|
}
|
|
35
36
|
canBundle(file) {
|
|
36
37
|
// assert by media type
|
|
37
|
-
if (
|
|
38
|
-
return _apidomNsOpenapi.mediaTypes
|
|
38
|
+
if (!(0, _mediaTypes.matches)('text/plain', file.mediaType)) {
|
|
39
|
+
return (0, _mediaTypes.selectBestMatch)(_apidomNsOpenapi.mediaTypes, file.mediaType) !== null;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
// assert by inspecting ApiDOM
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { cloneDeep } from '@speclynx/apidom-datamodel';
|
|
2
2
|
import { traverseAsync } from '@speclynx/apidom-traverse';
|
|
3
3
|
import { mediaTypes, isOpenApi3_1Element } from '@speclynx/apidom-ns-openapi-3-1';
|
|
4
|
+
import { matches, selectBestMatch } from '@swaggerexpert/media-types';
|
|
4
5
|
import Reference from "../../../Reference.mjs";
|
|
5
6
|
import ReferenceSet from "../../../ReferenceSet.mjs";
|
|
6
7
|
import BundleStrategy from "../BundleStrategy.mjs";
|
|
@@ -20,8 +21,8 @@ class OpenAPI3_1BundleStrategy extends BundleStrategy {
|
|
|
20
21
|
}
|
|
21
22
|
canBundle(file) {
|
|
22
23
|
// assert by media type
|
|
23
|
-
if (
|
|
24
|
-
return mediaTypes
|
|
24
|
+
if (!matches('text/plain', file.mediaType)) {
|
|
25
|
+
return selectBestMatch(mediaTypes, file.mediaType) !== null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
// assert by inspecting ApiDOM
|
|
@@ -31,8 +31,10 @@ const dereferenceApiDOM = async (element, options) => {
|
|
|
31
31
|
parseResult = new _apidomDatamodel.ParseResultElement([elementClone]);
|
|
32
32
|
surrogateWrapping = true;
|
|
33
33
|
}
|
|
34
|
+
|
|
35
|
+
// strategies look up same-document references by a resolved, hence normalized, URI
|
|
34
36
|
const file = new _File.default({
|
|
35
|
-
uri: options.resolve.baseURI,
|
|
37
|
+
uri: url.normalize(options.resolve.baseURI),
|
|
36
38
|
parseResult,
|
|
37
39
|
mediaType: options.parse.mediaType
|
|
38
40
|
});
|
|
@@ -66,21 +68,22 @@ const dereference = async (uri, options) => {
|
|
|
66
68
|
const {
|
|
67
69
|
refSet
|
|
68
70
|
} = options.dereference;
|
|
69
|
-
|
|
71
|
+
// the file is parsed as a whole document, so its URI has no fragment
|
|
72
|
+
const baseURI = url.normalize(url.stripHash(uri));
|
|
70
73
|
let parseResult;
|
|
71
74
|
|
|
72
75
|
// if refSet was provided, use it to avoid unnecessary parsing
|
|
73
|
-
if (refSet !== null && refSet.has(
|
|
76
|
+
if (refSet !== null && refSet.has(baseURI)) {
|
|
74
77
|
// @ts-ignore
|
|
75
78
|
({
|
|
76
79
|
value: parseResult
|
|
77
|
-
} = refSet.find((0, _ramda.propEq)(
|
|
80
|
+
} = refSet.find((0, _ramda.propEq)(baseURI, 'uri')));
|
|
78
81
|
} else {
|
|
79
82
|
parseResult = await (0, _index.default)(uri, options);
|
|
80
83
|
}
|
|
81
84
|
const mergedOptions = (0, _util.merge)(options, {
|
|
82
85
|
resolve: {
|
|
83
|
-
baseURI
|
|
86
|
+
baseURI
|
|
84
87
|
},
|
|
85
88
|
dereference: {
|
|
86
89
|
// if refSet was not provided, then we can work in mutable mode
|
|
@@ -23,8 +23,10 @@ export const dereferenceApiDOM = async (element, options) => {
|
|
|
23
23
|
parseResult = new ParseResultElement([elementClone]);
|
|
24
24
|
surrogateWrapping = true;
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
// strategies look up same-document references by a resolved, hence normalized, URI
|
|
26
28
|
const file = new File({
|
|
27
|
-
uri: options.resolve.baseURI,
|
|
29
|
+
uri: url.normalize(options.resolve.baseURI),
|
|
28
30
|
parseResult,
|
|
29
31
|
mediaType: options.parse.mediaType
|
|
30
32
|
});
|
|
@@ -57,21 +59,22 @@ const dereference = async (uri, options) => {
|
|
|
57
59
|
const {
|
|
58
60
|
refSet
|
|
59
61
|
} = options.dereference;
|
|
60
|
-
|
|
62
|
+
// the file is parsed as a whole document, so its URI has no fragment
|
|
63
|
+
const baseURI = url.normalize(url.stripHash(uri));
|
|
61
64
|
let parseResult;
|
|
62
65
|
|
|
63
66
|
// if refSet was provided, use it to avoid unnecessary parsing
|
|
64
|
-
if (refSet !== null && refSet.has(
|
|
67
|
+
if (refSet !== null && refSet.has(baseURI)) {
|
|
65
68
|
// @ts-ignore
|
|
66
69
|
({
|
|
67
70
|
value: parseResult
|
|
68
|
-
} = refSet.find(propEq(
|
|
71
|
+
} = refSet.find(propEq(baseURI, 'uri')));
|
|
69
72
|
} else {
|
|
70
73
|
parseResult = await parse(uri, options);
|
|
71
74
|
}
|
|
72
75
|
const mergedOptions = mergeOptions(options, {
|
|
73
76
|
resolve: {
|
|
74
|
-
baseURI
|
|
77
|
+
baseURI
|
|
75
78
|
},
|
|
76
79
|
dereference: {
|
|
77
80
|
// if refSet was not provided, then we can work in mutable mode
|