swagger-client 3.36.2 → 3.37.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +8 -7
  2. package/dist/swagger-client.browser.js +29435 -21476
  3. package/dist/swagger-client.browser.min.js +1 -1
  4. package/dist/swagger-client.browser.min.js.map +1 -1
  5. package/es/helpers/openapi-predicates.js +11 -1
  6. package/es/index.js +12 -4
  7. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/errors/SchemaRefError.js +3 -0
  8. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js +99 -0
  9. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/get-root-cause.js +17 -0
  10. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/to-path.js +23 -0
  11. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/all-of.js +103 -0
  12. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/dereference.js +677 -0
  13. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/parameters.js +40 -0
  14. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/properties.js +34 -0
  15. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/root.js +45 -0
  16. package/es/resolver/apidom/reference/parse/parsers/openapi-json-3-2/index.js +55 -0
  17. package/es/resolver/apidom/reference/parse/parsers/openapi-yaml-3-2/index.js +56 -0
  18. package/es/resolver/strategies/openapi-3-2-apidom/index.js +28 -0
  19. package/es/resolver/strategies/openapi-3-2-apidom/normalize.js +44 -0
  20. package/es/resolver/strategies/openapi-3-2-apidom/resolve.js +161 -0
  21. package/lib/helpers/openapi-predicates.js +13 -2
  22. package/lib/index.js +29 -21
  23. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/errors/SchemaRefError.js +7 -0
  24. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js +106 -0
  25. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/get-root-cause.js +21 -0
  26. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/utils/to-path.js +27 -0
  27. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/all-of.js +108 -0
  28. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/dereference.js +683 -0
  29. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/parameters.js +45 -0
  30. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/properties.js +39 -0
  31. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/visitors/root.js +51 -0
  32. package/lib/resolver/apidom/reference/parse/parsers/openapi-json-3-2/index.js +60 -0
  33. package/lib/resolver/apidom/reference/parse/parsers/openapi-yaml-3-2/index.js +62 -0
  34. package/lib/resolver/strategies/openapi-3-2-apidom/index.js +34 -0
  35. package/lib/resolver/strategies/openapi-3-2-apidom/normalize.js +51 -0
  36. package/lib/resolver/strategies/openapi-3-2-apidom/resolve.js +169 -0
  37. package/package.json +32 -29
@@ -0,0 +1,40 @@
1
+ import { toValue } from '@swagger-api/apidom-core';
2
+ import toPath from '../utils/to-path.js';
3
+ class ParameterMacroVisitor {
4
+ parameterMacro;
5
+ options;
6
+ #macroOperation;
7
+ OperationElement = {
8
+ enter: operationElement => {
9
+ this.#macroOperation = operationElement;
10
+ },
11
+ leave: () => {
12
+ this.#macroOperation = undefined;
13
+ }
14
+ };
15
+ ParameterElement = {
16
+ leave: (parameterElement, key, parent, path, ancestors) => {
17
+ const pojoOperation = this.#macroOperation ? toValue(this.#macroOperation) : null;
18
+ const pojoParameter = toValue(parameterElement);
19
+ try {
20
+ const macroValue = this.parameterMacro(pojoOperation, pojoParameter);
21
+ parameterElement.set('default', macroValue);
22
+ } catch (error) {
23
+ var _this$options$derefer, _this$options$derefer2;
24
+ const macroError = new Error(error, {
25
+ cause: error
26
+ });
27
+ macroError.fullPath = toPath([...ancestors, parent]);
28
+ (_this$options$derefer = this.options.dereference.dereferenceOpts) === null || _this$options$derefer === void 0 || (_this$options$derefer = _this$options$derefer.errors) === null || _this$options$derefer === void 0 || (_this$options$derefer2 = _this$options$derefer.push) === null || _this$options$derefer2 === void 0 || _this$options$derefer2.call(_this$options$derefer, macroError);
29
+ }
30
+ }
31
+ };
32
+ constructor({
33
+ parameterMacro,
34
+ options
35
+ }) {
36
+ this.parameterMacro = parameterMacro;
37
+ this.options = options;
38
+ }
39
+ }
40
+ export default ParameterMacroVisitor;
@@ -0,0 +1,34 @@
1
+ import { isObjectElement, toValue } from '@swagger-api/apidom-core';
2
+ import toPath from '../utils/to-path.js';
3
+ class ModelPropertyMacroVisitor {
4
+ modelPropertyMacro;
5
+ options;
6
+ SchemaElement = {
7
+ leave: (schemaElement, key, parent, path, ancestors) => {
8
+ if (typeof schemaElement.properties === 'undefined') return;
9
+ if (!isObjectElement(schemaElement.properties)) return;
10
+ schemaElement.properties.forEach(property => {
11
+ if (!isObjectElement(property)) return;
12
+ try {
13
+ const macroValue = this.modelPropertyMacro(toValue(property));
14
+ property.set('default', macroValue);
15
+ } catch (error) {
16
+ var _this$options$derefer, _this$options$derefer2;
17
+ const macroError = new Error(error, {
18
+ cause: error
19
+ });
20
+ macroError.fullPath = [...toPath([...ancestors, parent, schemaElement]), 'properties'];
21
+ (_this$options$derefer = this.options.dereference.dereferenceOpts) === null || _this$options$derefer === void 0 || (_this$options$derefer = _this$options$derefer.errors) === null || _this$options$derefer === void 0 || (_this$options$derefer2 = _this$options$derefer.push) === null || _this$options$derefer2 === void 0 || _this$options$derefer2.call(_this$options$derefer, macroError);
22
+ }
23
+ });
24
+ }
25
+ };
26
+ constructor({
27
+ modelPropertyMacro,
28
+ options
29
+ }) {
30
+ this.modelPropertyMacro = modelPropertyMacro;
31
+ this.options = options;
32
+ }
33
+ }
34
+ export default ModelPropertyMacroVisitor;
@@ -0,0 +1,45 @@
1
+ import { mergeAllVisitors } from '@swagger-api/apidom-core';
2
+ import { getNodeType } from '@swagger-api/apidom-ns-openapi-3-2';
3
+ import ModelPropertyMacroVisitor from './properties.js';
4
+ import AllOfVisitor from './all-of.js';
5
+ import ParameterMacroVisitor from './parameters.js';
6
+ import OpenAPI3_2SwaggerClientDereferenceVisitor from './dereference.js'; // eslint-disable-line camelcase
7
+
8
+ const mergeAllVisitorsAsync = mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
9
+ class RootVisitor {
10
+ constructor({
11
+ parameterMacro,
12
+ modelPropertyMacro,
13
+ mode,
14
+ options,
15
+ ...rest
16
+ }) {
17
+ const visitors = [];
18
+ visitors.push(new OpenAPI3_2SwaggerClientDereferenceVisitor({
19
+ ...rest,
20
+ options
21
+ }));
22
+ if (typeof modelPropertyMacro === 'function') {
23
+ visitors.push(new ModelPropertyMacroVisitor({
24
+ modelPropertyMacro,
25
+ options
26
+ }));
27
+ }
28
+ if (mode !== 'strict') {
29
+ visitors.push(new AllOfVisitor({
30
+ options
31
+ }));
32
+ }
33
+ if (typeof parameterMacro === 'function') {
34
+ visitors.push(new ParameterMacroVisitor({
35
+ parameterMacro,
36
+ options
37
+ }));
38
+ }
39
+ const mergedVisitor = mergeAllVisitorsAsync(visitors, {
40
+ nodeTypeGetter: getNodeType
41
+ });
42
+ Object.assign(this, mergedVisitor);
43
+ }
44
+ }
45
+ export default RootVisitor;
@@ -0,0 +1,55 @@
1
+ /* eslint-disable camelcase */
2
+ import { ParseResultElement } from '@swagger-api/apidom-core';
3
+ import { ParserError, Parser } from '@swagger-api/apidom-reference/configuration/empty';
4
+ import { mediaTypes, OpenApi3_2Element, OpenAPIMediaTypes } from '@swagger-api/apidom-ns-openapi-3-2';
5
+ class OpenAPIJSON3_2Parser extends Parser {
6
+ detectionRegExp = /"openapi"\s*:\s*"(?<version_json>3\.2\.(?:[1-9]\d*|0))"/;
7
+ constructor(options = {}) {
8
+ super({
9
+ name: 'openapi-json-3-2-swagger-client',
10
+ mediaTypes: new OpenAPIMediaTypes(...mediaTypes.filterByFormat('generic'), ...mediaTypes.filterByFormat('json')),
11
+ ...options
12
+ });
13
+ }
14
+ async canParse(file) {
15
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
16
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
17
+ if (!hasSupportedFileExtension) return false;
18
+ if (hasSupportedMediaType) return true;
19
+ if (!hasSupportedMediaType) {
20
+ try {
21
+ const source = file.toString();
22
+ JSON.parse(source);
23
+ return this.detectionRegExp.test(source);
24
+ } catch (error) {
25
+ return false;
26
+ }
27
+ }
28
+ return false;
29
+ }
30
+ async parse(file) {
31
+ if (this.sourceMap) {
32
+ throw new ParserError("openapi-json-3-2-swagger-client parser plugin doesn't support sourceMaps option");
33
+ }
34
+ const parseResultElement = new ParseResultElement();
35
+ const source = file.toString();
36
+
37
+ // allow empty files
38
+ if (this.allowEmpty && source.trim() === '') {
39
+ return parseResultElement;
40
+ }
41
+ try {
42
+ const pojo = JSON.parse(source);
43
+ const element = OpenApi3_2Element.refract(pojo, this.refractorOpts);
44
+ element.classes.push('result');
45
+ parseResultElement.push(element);
46
+ return parseResultElement;
47
+ } catch (error) {
48
+ throw new ParserError(`Error parsing "${file.uri}"`, {
49
+ cause: error
50
+ });
51
+ }
52
+ }
53
+ }
54
+ export default OpenAPIJSON3_2Parser;
55
+ /* eslint-enable camelcase */
@@ -0,0 +1,56 @@
1
+ /* eslint-disable camelcase */
2
+ import YAML, { JSON_SCHEMA } from 'js-yaml';
3
+ import { ParseResultElement } from '@swagger-api/apidom-core';
4
+ import { ParserError, Parser } from '@swagger-api/apidom-reference/configuration/empty';
5
+ import { mediaTypes, OpenApi3_2Element, OpenAPIMediaTypes } from '@swagger-api/apidom-ns-openapi-3-2';
6
+ class OpenAPIYAML32Parser extends Parser {
7
+ detectionRegExp = /(?<YAML>^(["']?)openapi\2\s*:\s*(["']?)(?<version_yaml>3\.2\.(?:[1-9]\d*|0))\3(?:\s+|$))|(?<JSON>"openapi"\s*:\s*"(?<version_json>3\.2\.(?:[1-9]\d*|0))")/m;
8
+ constructor(options = {}) {
9
+ super({
10
+ name: 'openapi-yaml-3-2-swagger-client',
11
+ mediaTypes: new OpenAPIMediaTypes(...mediaTypes.filterByFormat('generic'), ...mediaTypes.filterByFormat('yaml')),
12
+ ...options
13
+ });
14
+ }
15
+ async canParse(file) {
16
+ const hasSupportedFileExtension = this.fileExtensions.length === 0 ? true : this.fileExtensions.includes(file.extension);
17
+ const hasSupportedMediaType = this.mediaTypes.includes(file.mediaType);
18
+ if (!hasSupportedFileExtension) return false;
19
+ if (hasSupportedMediaType) return true;
20
+ if (!hasSupportedMediaType) {
21
+ try {
22
+ const source = file.toString();
23
+ YAML.load(source);
24
+ return this.detectionRegExp.test(source);
25
+ } catch (error) {
26
+ return false;
27
+ }
28
+ }
29
+ return false;
30
+ }
31
+ async parse(file) {
32
+ if (this.sourceMap) {
33
+ throw new ParserError("openapi-yaml-3-2-swagger-client parser plugin doesn't support sourceMaps option");
34
+ }
35
+ const parseResultElement = new ParseResultElement();
36
+ const source = file.toString();
37
+ try {
38
+ const pojo = YAML.load(source, {
39
+ schema: JSON_SCHEMA
40
+ });
41
+ if (this.allowEmpty && typeof pojo === 'undefined') {
42
+ return parseResultElement;
43
+ }
44
+ const element = OpenApi3_2Element.refract(pojo, this.refractorOpts);
45
+ element.classes.push('result');
46
+ parseResultElement.push(element);
47
+ return parseResultElement;
48
+ } catch (error) {
49
+ throw new ParserError(`Error parsing "${file.uri}"`, {
50
+ cause: error
51
+ });
52
+ }
53
+ }
54
+ }
55
+ export default OpenAPIYAML32Parser;
56
+ /* eslint-enable camelcase */
@@ -0,0 +1,28 @@
1
+ import { isPlainObject } from 'ramda-adjunct';
2
+ import { isElement } from '@swagger-api/apidom-core';
3
+ import resolveOpenAPI32Strategy from './resolve.js';
4
+ import normalize, { pojoAdapter } from './normalize.js';
5
+ import { isOpenAPI32 } from '../../../helpers/openapi-predicates.js';
6
+ const openApi32ApiDOMStrategy = {
7
+ name: 'openapi-3-2-apidom',
8
+ match(spec) {
9
+ return isOpenAPI32(spec);
10
+ },
11
+ normalize(spec) {
12
+ // pre-normalization - happens only once before the first lazy dereferencing and in JavaScript context
13
+ if (!isElement(spec) && isPlainObject(spec) && !spec.$$normalized) {
14
+ const preNormalized = pojoAdapter(normalize)(spec);
15
+ preNormalized.$$normalized = true;
16
+ return preNormalized;
17
+ }
18
+ // post-normalization - happens after each dereferencing and in ApiDOM context
19
+ if (isElement(spec)) {
20
+ return normalize(spec);
21
+ }
22
+ return spec;
23
+ },
24
+ async resolve(options) {
25
+ return resolveOpenAPI32Strategy(options);
26
+ }
27
+ };
28
+ export default openApi32ApiDOMStrategy;
@@ -0,0 +1,44 @@
1
+ /* eslint-disable camelcase */
2
+ import { dispatchRefractorPlugins, isObjectElement, toValue } from '@swagger-api/apidom-core';
3
+ import { refractorPluginNormalizeOperationIds, refractorPluginNormalizeParameters, refractorPluginNormalizeSecurityRequirements, refractorPluginNormalizeParameterExamples, refractorPluginNormalizeHeaderExamples, createToolbox, keyMap, getNodeType, OpenApi3_2Element } from '@swagger-api/apidom-ns-openapi-3-2';
4
+ import opId from '../../../helpers/op-id.js';
5
+ import resolveOpenAPI32Strategy from './resolve.js';
6
+ const normalize = element => {
7
+ if (!isObjectElement(element)) return element;
8
+ const plugins = [refractorPluginNormalizeOperationIds({
9
+ operationIdNormalizer: (operationId, path, method) => opId({
10
+ operationId
11
+ }, path, method, {
12
+ v2OperationIdCompatibilityMode: false
13
+ })
14
+ }), refractorPluginNormalizeParameters(), refractorPluginNormalizeSecurityRequirements(), refractorPluginNormalizeParameterExamples(), refractorPluginNormalizeHeaderExamples()];
15
+ const normalized = dispatchRefractorPlugins(element, plugins, {
16
+ toolboxCreator: createToolbox,
17
+ visitorOptions: {
18
+ keyMap,
19
+ nodeTypeGetter: getNodeType
20
+ }
21
+ });
22
+ return normalized;
23
+ };
24
+
25
+ /**
26
+ * This adapter allow to perform normalization on Plain Old JavaScript Objects.
27
+ * The function adapts the `normalize` function interface and is able to accept
28
+ * Plain Old JavaScript Objects and returns Plain Old JavaScript Objects.
29
+ */
30
+ export const pojoAdapter = normalizeFn => spec => {
31
+ const openApiElement = OpenApi3_2Element.refract(spec);
32
+ openApiElement.classes.push('result');
33
+ const normalized = normalizeFn(openApiElement);
34
+ const value = toValue(normalized);
35
+
36
+ /**
37
+ * We're setting the cache here to avoid repeated refracting
38
+ * in `openapi-3-2-apidom` strategy resolve method.
39
+ */
40
+ resolveOpenAPI32Strategy.cache.set(value, normalized);
41
+ return toValue(normalized);
42
+ };
43
+ export default normalize;
44
+ /* eslint-enable camelcase */
@@ -0,0 +1,161 @@
1
+ /* eslint-disable camelcase */
2
+ import { ParseResultElement, ObjectElement, toValue, transclude, cloneDeep } from '@swagger-api/apidom-core';
3
+ import { compile as jsonPointerCompile, evaluate as jsonPointerEvaluate, JSONPointerEvaluateError } from '@swagger-api/apidom-json-pointer/modern';
4
+ import { mediaTypes, OpenApi3_2Element } from '@swagger-api/apidom-ns-openapi-3-2';
5
+ import { dereferenceApiDOM, url, ReferenceSet, Reference, options as referenceOptions } from '@swagger-api/apidom-reference/configuration/empty';
6
+ import BinaryParser from '@swagger-api/apidom-reference/parse/parsers/binary';
7
+ import OpenAPI3_1ResolveStrategy from '@swagger-api/apidom-reference/resolve/strategies/openapi-3-1';
8
+ import { DEFAULT_BASE_URL } from '../../../constants.js';
9
+ import * as optionsUtil from '../../utils/options.js';
10
+ import HTTPResolverSwaggerClient from '../../apidom/reference/resolve/resolvers/http-swagger-client/index.js';
11
+ import JSONParser from '../../apidom/reference/parse/parsers/json/index.js';
12
+ import YAMLParser from '../../apidom/reference/parse/parsers/yaml-1-2/index.js';
13
+ import OpenAPIJSON3_2Parser from '../../apidom/reference/parse/parsers/openapi-json-3-2/index.js';
14
+ import OpenAPIYAML3_2Parser from '../../apidom/reference/parse/parsers/openapi-yaml-3-2/index.js';
15
+ import OpenAPI3_2SwaggerClientDereferenceStrategy from '../../apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js';
16
+ export const circularReplacer = refElement => {
17
+ const $refBaseURI = toValue(refElement.meta.get('baseURI'));
18
+ const referencingElement = refElement.meta.get('referencingElement');
19
+
20
+ /**
21
+ * Removing semantics from the absolutified referencing element by
22
+ * using generic ObjectElement to represent the reference.
23
+ */
24
+ return new ObjectElement({
25
+ $ref: $refBaseURI
26
+ }, cloneDeep(referencingElement.meta), cloneDeep(referencingElement.attributes));
27
+ };
28
+ const resolveOpenAPI32Strategy = async options => {
29
+ const {
30
+ spec,
31
+ timeout,
32
+ redirects,
33
+ requestInterceptor,
34
+ responseInterceptor,
35
+ pathDiscriminator = [],
36
+ allowMetaPatches = false,
37
+ useCircularStructures = false,
38
+ skipNormalization = false,
39
+ parameterMacro = null,
40
+ modelPropertyMacro = null,
41
+ mode = 'non-strict',
42
+ strategies
43
+ } = options;
44
+ try {
45
+ const {
46
+ cache
47
+ } = resolveOpenAPI32Strategy;
48
+ const strategy = strategies.find(strg => strg.match(spec));
49
+
50
+ // determining BaseURI
51
+ const cwd = url.isHttpUrl(url.cwd()) ? url.cwd() : DEFAULT_BASE_URL;
52
+ const retrievalURI = optionsUtil.retrievalURI(options);
53
+ const baseURI = url.resolve(cwd, retrievalURI);
54
+
55
+ // prepare spec for dereferencing
56
+ let openApiElement;
57
+ if (cache.has(spec)) {
58
+ openApiElement = cache.get(spec);
59
+ } else {
60
+ openApiElement = OpenApi3_2Element.refract(spec);
61
+ openApiElement.classes.push('result');
62
+ cache.set(spec, openApiElement);
63
+ }
64
+ const openApiParseResultElement = new ParseResultElement([openApiElement]);
65
+
66
+ // prepare fragment for dereferencing
67
+ const jsonPointer = jsonPointerCompile(pathDiscriminator);
68
+ const jsonPointerURI = jsonPointer === '' ? '' : `#${jsonPointer}`;
69
+ const fragmentElement = jsonPointerEvaluate(openApiElement, jsonPointer);
70
+
71
+ // prepare reference set for dereferencing
72
+ const openApiElementReference = new Reference({
73
+ uri: baseURI,
74
+ value: openApiParseResultElement
75
+ });
76
+ const refSet = new ReferenceSet({
77
+ refs: [openApiElementReference]
78
+ });
79
+ if (jsonPointer !== '') refSet.rootRef = undefined; // reset root reference as we want fragment to become the root reference
80
+
81
+ // prepare ancestors; needed for cases where fragment is not OpenAPI element
82
+ const ancestors = [new Set([fragmentElement])];
83
+ const errors = [];
84
+ const dereferenced = await dereferenceApiDOM(fragmentElement, {
85
+ resolve: {
86
+ /**
87
+ * swagger-client only supports resolving HTTP(S) URLs or spec objects.
88
+ * If runtime env is detected as non-browser one,
89
+ * and baseURI was not provided as part of resolver options,
90
+ * then below baseURI check will make sure that constant HTTPS URL is used as baseURI.
91
+ */
92
+ baseURI: `${baseURI}${jsonPointerURI}`,
93
+ resolvers: [new HTTPResolverSwaggerClient({
94
+ timeout: timeout || 10000,
95
+ redirects: redirects || 10
96
+ })],
97
+ resolverOpts: {
98
+ swaggerHTTPClientConfig: {
99
+ requestInterceptor,
100
+ responseInterceptor
101
+ }
102
+ },
103
+ strategies: [new OpenAPI3_1ResolveStrategy()]
104
+ },
105
+ parse: {
106
+ mediaType: mediaTypes.latest(),
107
+ parsers: [new OpenAPIJSON3_2Parser({
108
+ allowEmpty: false,
109
+ sourceMap: false
110
+ }), new OpenAPIYAML3_2Parser({
111
+ allowEmpty: false,
112
+ sourceMap: false
113
+ }), new JSONParser({
114
+ allowEmpty: false,
115
+ sourceMap: false
116
+ }), new YAMLParser({
117
+ allowEmpty: false,
118
+ sourceMap: false
119
+ }), new BinaryParser({
120
+ allowEmpty: false,
121
+ sourceMap: false
122
+ })]
123
+ },
124
+ dereference: {
125
+ maxDepth: 100,
126
+ strategies: [new OpenAPI3_2SwaggerClientDereferenceStrategy({
127
+ allowMetaPatches,
128
+ useCircularStructures,
129
+ parameterMacro,
130
+ modelPropertyMacro,
131
+ mode,
132
+ ancestors
133
+ })],
134
+ refSet,
135
+ dereferenceOpts: {
136
+ errors
137
+ },
138
+ immutable: false,
139
+ circular: useCircularStructures ? 'ignore' : 'replace',
140
+ circularReplacer: useCircularStructures ? referenceOptions.dereference.circularReplacer : circularReplacer
141
+ }
142
+ });
143
+ const transcluded = transclude(fragmentElement, dereferenced, openApiElement);
144
+ const normalized = skipNormalization ? transcluded : strategy.normalize(transcluded);
145
+ return {
146
+ spec: toValue(normalized),
147
+ errors
148
+ };
149
+ } catch (error) {
150
+ if (error instanceof JSONPointerEvaluateError) {
151
+ return {
152
+ spec,
153
+ errors: []
154
+ };
155
+ }
156
+ throw error;
157
+ }
158
+ };
159
+ resolveOpenAPI32Strategy.cache = new WeakMap();
160
+ export default resolveOpenAPI32Strategy;
161
+ /* eslint-enable camelcase */
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- exports.isSwagger2 = exports.isOpenAPI31 = exports.isOpenAPI30 = exports.isOpenAPI3 = exports.isOpenAPI2 = void 0;
4
+ exports.isSwagger2 = exports.isOpenAPI32 = exports.isOpenAPI31 = exports.isOpenAPI30 = exports.isOpenAPI3 = exports.isOpenAPI2 = void 0;
5
5
  const isOpenAPI2 = spec => {
6
6
  try {
7
7
  const {
@@ -35,7 +35,18 @@ const isOpenAPI31 = spec => {
35
35
  }
36
36
  };
37
37
  exports.isOpenAPI31 = isOpenAPI31;
38
- const isOpenAPI3 = spec => isOpenAPI30(spec) || isOpenAPI31(spec);
38
+ const isOpenAPI32 = spec => {
39
+ try {
40
+ const {
41
+ openapi
42
+ } = spec;
43
+ return typeof openapi === 'string' && /^3\.2\.(?:[1-9]\d*|0)$/.test(openapi);
44
+ } catch {
45
+ return false;
46
+ }
47
+ };
48
+ exports.isOpenAPI32 = isOpenAPI32;
49
+ const isOpenAPI3 = spec => isOpenAPI30(spec) || isOpenAPI31(spec) || isOpenAPI32(spec);
39
50
 
40
51
  // backward compatibility export
41
52
  exports.isOpenAPI3 = isOpenAPI3;
package/lib/index.js CHANGED
@@ -13,59 +13,67 @@ var _index5 = _interopRequireDefault(require("./resolver/strategies/generic/inde
13
13
  var _index6 = _interopRequireWildcard(require("./resolver/strategies/openapi-2/index.js"));
14
14
  var _index7 = _interopRequireDefault(require("./resolver/strategies/openapi-3-0/index.js"));
15
15
  var _index8 = _interopRequireDefault(require("./resolver/strategies/openapi-3-1-apidom/index.js"));
16
+ var _index9 = _interopRequireDefault(require("./resolver/strategies/openapi-3-2-apidom/index.js"));
16
17
  var _interfaces = require("./interfaces.js");
17
- var _index9 = require("./execute/index.js");
18
- var _index0 = require("./helpers/index.js");
18
+ var _index0 = require("./execute/index.js");
19
+ var _index1 = require("./helpers/index.js");
19
20
  var _openapiPredicates = require("./helpers/openapi-predicates.js");
20
- var _index1 = _interopRequireDefault(require("./resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js"));
21
- var _index10 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/json/index.js"));
22
- var _index11 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/yaml-1-2/index.js"));
23
- var _index12 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js"));
24
- var _index13 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js"));
25
- var _index14 = _interopRequireDefault(require("./resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js"));
21
+ var _index10 = _interopRequireDefault(require("./resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js"));
22
+ var _index11 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/json/index.js"));
23
+ var _index12 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/yaml-1-2/index.js"));
24
+ var _index13 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js"));
25
+ var _index14 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js"));
26
+ var _index15 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-json-3-2/index.js"));
27
+ var _index16 = _interopRequireDefault(require("./resolver/apidom/reference/parse/parsers/openapi-yaml-3-2/index.js"));
28
+ var _index17 = _interopRequireDefault(require("./resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js"));
29
+ var _index18 = _interopRequireDefault(require("./resolver/apidom/reference/dereference/strategies/openapi-3-2-swagger-client/index.js"));
26
30
  /* eslint-disable camelcase */
27
31
 
28
32
  Swagger.http = _index.default;
29
33
  Swagger.makeHttp = _index.makeHttp.bind(null, Swagger.http);
30
34
  Swagger.resolveStrategies = {
35
+ 'openapi-3-2-apidom': _index9.default,
31
36
  'openapi-3-1-apidom': _index8.default,
32
37
  'openapi-3-0': _index7.default,
33
38
  'openapi-2-0': _index6.default,
34
39
  generic: _index5.default
35
40
  };
36
41
  Swagger.resolve = (0, _index3.makeResolve)({
37
- strategies: [Swagger.resolveStrategies['openapi-3-1-apidom'], Swagger.resolveStrategies['openapi-3-0'], Swagger.resolveStrategies['openapi-2-0'], Swagger.resolveStrategies.generic]
42
+ strategies: [Swagger.resolveStrategies['openapi-3-2-apidom'], Swagger.resolveStrategies['openapi-3-1-apidom'], Swagger.resolveStrategies['openapi-3-0'], Swagger.resolveStrategies['openapi-2-0'], Swagger.resolveStrategies.generic]
38
43
  });
39
44
  Swagger.resolveSubtree = (0, _index4.makeResolveSubtree)({
40
- strategies: [Swagger.resolveStrategies['openapi-3-1-apidom'], Swagger.resolveStrategies['openapi-3-0'], Swagger.resolveStrategies['openapi-2-0'], Swagger.resolveStrategies.generic]
45
+ strategies: [Swagger.resolveStrategies['openapi-3-2-apidom'], Swagger.resolveStrategies['openapi-3-1-apidom'], Swagger.resolveStrategies['openapi-3-0'], Swagger.resolveStrategies['openapi-2-0'], Swagger.resolveStrategies.generic]
41
46
  });
42
- Swagger.execute = _index9.execute;
47
+ Swagger.execute = _index0.execute;
43
48
  Swagger.serializeRes = _index.serializeRes;
44
49
  Swagger.serializeHeaders = _index2.serializeHeaders;
45
50
  Swagger.clearCache = _index6.clearCache;
46
51
  Swagger.makeApisTagOperation = _interfaces.makeApisTagOperation;
47
- Swagger.buildRequest = _index9.buildRequest;
52
+ Swagger.buildRequest = _index0.buildRequest;
48
53
  Swagger.helpers = {
49
- opId: _index0.opId
54
+ opId: _index1.opId
50
55
  };
51
- Swagger.getBaseUrl = _index9.baseUrl;
56
+ Swagger.getBaseUrl = _index0.baseUrl;
52
57
  Swagger.apidom = {
53
58
  resolve: {
54
59
  resolvers: {
55
- HTTPResolverSwaggerClient: _index1.default
60
+ HTTPResolverSwaggerClient: _index10.default
56
61
  }
57
62
  },
58
63
  parse: {
59
64
  parsers: {
60
- JsonParser: _index10.default,
61
- YamlParser: _index11.default,
62
- OpenApiJson3_1Parser: _index12.default,
63
- OpenApiYaml3_1Parser: _index13.default
65
+ JsonParser: _index11.default,
66
+ YamlParser: _index12.default,
67
+ OpenApiJson3_1Parser: _index13.default,
68
+ OpenApiYaml3_1Parser: _index14.default,
69
+ OpenApiJson3_2Parser: _index15.default,
70
+ OpenApiYaml3_2Parser: _index16.default
64
71
  }
65
72
  },
66
73
  dereference: {
67
74
  strategies: {
68
- OpenApi3_1SwaggerClientDereferenceStrategy: _index14.default
75
+ OpenApi3_1SwaggerClientDereferenceStrategy: _index17.default,
76
+ OpenApi3_2SwaggerClientDereferenceStrategy: _index18.default
69
77
  }
70
78
  }
71
79
  };
@@ -132,7 +140,7 @@ Swagger.prototype.applyDefaults = function applyDefaults() {
132
140
  spec
133
141
  } = this;
134
142
  const specUrl = this.url;
135
- if ((0, _openapiPredicates.isOpenAPI2)(spec) && (0, _index0.isHttpUrl)(specUrl)) {
143
+ if ((0, _openapiPredicates.isOpenAPI2)(spec) && (0, _index1.isHttpUrl)(specUrl)) {
136
144
  const parsed = new URL(specUrl);
137
145
  if (!spec.host) {
138
146
  spec.host = parsed.host;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+
3
+ exports.__esModule = true;
4
+ exports.default = void 0;
5
+ var _apidomError = require("@swagger-api/apidom-error");
6
+ class SchemaRefError extends _apidomError.ApiDOMStructuredError {}
7
+ var _default = exports.default = SchemaRefError;