swagger-client 3.27.9 → 3.28.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 (32) hide show
  1. package/dist/swagger-client.browser.js +12494 -12585
  2. package/dist/swagger-client.browser.min.js +1 -1
  3. package/dist/swagger-client.browser.min.js.map +1 -1
  4. package/es/index.js +2 -2
  5. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +81 -119
  6. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +66 -69
  7. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +569 -588
  8. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/parameters.js +31 -34
  9. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/properties.js +25 -28
  10. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/root.js +45 -0
  11. package/es/resolver/apidom/reference/parse/parsers/json/index.js +43 -42
  12. package/es/resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js +46 -45
  13. package/es/resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js +46 -45
  14. package/es/resolver/apidom/reference/parse/parsers/yaml-1-2/index.js +44 -43
  15. package/es/resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js +62 -60
  16. package/es/resolver/strategies/openapi-3-1-apidom/resolve.js +18 -18
  17. package/lib/index.js +1 -1
  18. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js +79 -117
  19. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/all-of.js +66 -69
  20. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/dereference.js +568 -587
  21. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/parameters.js +31 -34
  22. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/properties.js +25 -28
  23. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/visitors/root.js +51 -0
  24. package/lib/resolver/apidom/reference/parse/parsers/json/index.js +43 -42
  25. package/lib/resolver/apidom/reference/parse/parsers/openapi-json-3-1/index.js +46 -45
  26. package/lib/resolver/apidom/reference/parse/parsers/openapi-yaml-3-1/index.js +46 -45
  27. package/lib/resolver/apidom/reference/parse/parsers/yaml-1-2/index.js +44 -43
  28. package/lib/resolver/apidom/reference/resolve/resolvers/http-swagger-client/index.js +61 -59
  29. package/lib/resolver/strategies/openapi-3-1-apidom/resolve.js +11 -11
  30. package/package.json +23 -22
  31. package/es/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/utils/compose.js +0 -5
  32. package/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/utils/compose.js +0 -11
@@ -1,67 +1,69 @@
1
- import { ResolverError, HttpResolver } from '@swagger-api/apidom-reference/configuration/empty';
1
+ import { ResolverError, HTTPResolver } from '@swagger-api/apidom-reference/configuration/empty';
2
2
  import '../../../../../../helpers/fetch-polyfill.node.js';
3
3
  import '../../../../../../helpers/abortcontroller-polyfill.node.js';
4
4
  import Http from '../../../../../../http/index.js';
5
- const HttpResolverSwaggerClient = HttpResolver.compose({
6
- props: {
7
- name: 'http-swagger-client',
8
- swaggerHTTPClient: Http,
9
- swaggerHTTPClientConfig: {}
10
- },
11
- init({
12
- swaggerHTTPClient = this.swaggerHTTPClient
5
+ class HTTPResolverSwaggerClient extends HTTPResolver {
6
+ swaggerHTTPClient = Http;
7
+ swaggerHTTPClientConfig;
8
+ constructor({
9
+ swaggerHTTPClient = Http,
10
+ swaggerHTTPClientConfig = {},
11
+ ...rest
13
12
  } = {}) {
13
+ super({
14
+ ...rest,
15
+ name: 'http-swagger-client'
16
+ });
14
17
  this.swaggerHTTPClient = swaggerHTTPClient;
15
- },
16
- methods: {
17
- getHttpClient() {
18
- return this.swaggerHTTPClient;
19
- },
20
- async read(file) {
21
- const client = this.getHttpClient();
22
- const controller = new AbortController();
23
- const {
24
- signal
25
- } = controller;
26
- const timeoutID = setTimeout(() => {
27
- controller.abort();
28
- }, this.timeout);
29
- const credentials = this.getHttpClient().withCredentials || this.withCredentials ? 'include' : 'same-origin';
30
- const redirect = this.redirects === 0 ? 'error' : 'follow';
31
- const follow = this.redirects > 0 ? this.redirects : undefined;
32
- try {
33
- const response = await client({
34
- url: file.uri,
35
- signal,
36
- userFetch: async (resource, options) => {
37
- let res = await fetch(resource, options);
38
- try {
39
- // undici supports mutations
40
- res.headers.delete('Content-Type');
41
- } catch {
42
- // Fetch API has guards which prevent mutations
43
- res = new Response(res.body, {
44
- ...res,
45
- headers: new Headers(res.headers)
46
- });
47
- res.headers.delete('Content-Type');
48
- }
49
- return res;
50
- },
51
- credentials,
52
- redirect,
53
- follow,
54
- ...this.swaggerHTTPClientConfig
55
- });
56
- return response.text.arrayBuffer();
57
- } catch (error) {
58
- throw new ResolverError(`Error downloading "${file.uri}"`, {
59
- cause: error
60
- });
61
- } finally {
62
- clearTimeout(timeoutID);
63
- }
18
+ this.swaggerHTTPClientConfig = swaggerHTTPClientConfig;
19
+ }
20
+ getHttpClient() {
21
+ return this.swaggerHTTPClient;
22
+ }
23
+ async read(file) {
24
+ const client = this.getHttpClient();
25
+ const controller = new AbortController();
26
+ const {
27
+ signal
28
+ } = controller;
29
+ const timeoutID = setTimeout(() => {
30
+ controller.abort();
31
+ }, this.timeout);
32
+ const credentials = this.getHttpClient().withCredentials || this.withCredentials ? 'include' : 'same-origin';
33
+ const redirect = this.redirects === 0 ? 'error' : 'follow';
34
+ const follow = this.redirects > 0 ? this.redirects : undefined;
35
+ try {
36
+ const response = await client({
37
+ url: file.uri,
38
+ signal,
39
+ userFetch: async (resource, options) => {
40
+ let res = await fetch(resource, options);
41
+ try {
42
+ // undici supports mutations
43
+ res.headers.delete('Content-Type');
44
+ } catch {
45
+ // Fetch API has guards which prevent mutations
46
+ res = new Response(res.body, {
47
+ ...res,
48
+ headers: new Headers(res.headers)
49
+ });
50
+ res.headers.delete('Content-Type');
51
+ }
52
+ return res;
53
+ },
54
+ credentials,
55
+ redirect,
56
+ follow,
57
+ ...this.swaggerHTTPClientConfig
58
+ });
59
+ return response.text.arrayBuffer();
60
+ } catch (error) {
61
+ throw new ResolverError(`Error downloading "${file.uri}"`, {
62
+ cause: error
63
+ });
64
+ } finally {
65
+ clearTimeout(timeoutID);
64
66
  }
65
67
  }
66
- });
67
- export default HttpResolverSwaggerClient;
68
+ }
69
+ export default HTTPResolverSwaggerClient;
@@ -4,16 +4,16 @@ import { compile as jsonPointerCompile, evaluate as jsonPointerEvaluate, Evaluat
4
4
  import { mediaTypes, OpenApi3_1Element } from '@swagger-api/apidom-ns-openapi-3-1';
5
5
  import { dereferenceApiDOM, url, ReferenceSet, Reference, options as referenceOptions } from '@swagger-api/apidom-reference/configuration/empty';
6
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';
7
+ import OpenAPI3_1ResolveStrategy from '@swagger-api/apidom-reference/resolve/strategies/openapi-3-1';
8
8
  import { DEFAULT_BASE_URL } from '../../../constants.js';
9
9
  import * as optionsUtil from '../../utils/options.js';
10
10
  import normalize from './normalize.js';
11
- import HttpResolverSwaggerClient from '../../apidom/reference/resolve/resolvers/http-swagger-client/index.js';
12
- import JsonParser from '../../apidom/reference/parse/parsers/json/index.js';
13
- import YamlParser from '../../apidom/reference/parse/parsers/yaml-1-2/index.js';
14
- import OpenApiJson3_1Parser from '../../apidom/reference/parse/parsers/openapi-json-3-1/index.js';
15
- import OpenApiYaml3_1Parser from '../../apidom/reference/parse/parsers/openapi-yaml-3-1/index.js';
16
- import OpenApi3_1SwaggerClientDereferenceStrategy from '../../apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js';
11
+ import HTTPResolverSwaggerClient from '../../apidom/reference/resolve/resolvers/http-swagger-client/index.js';
12
+ import JSONParser from '../../apidom/reference/parse/parsers/json/index.js';
13
+ import YAMLParser from '../../apidom/reference/parse/parsers/yaml-1-2/index.js';
14
+ import OpenAPIJSON3_1Parser from '../../apidom/reference/parse/parsers/openapi-json-3-1/index.js';
15
+ import OpenAPIYAML3_1Parser from '../../apidom/reference/parse/parsers/openapi-yaml-3-1/index.js';
16
+ import OpenAPI3_1SwaggerClientDereferenceStrategy from '../../apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js';
17
17
  export const circularReplacer = refElement => {
18
18
  const $refBaseURI = toValue(refElement.meta.get('baseURI'));
19
19
  const referencingElement = refElement.meta.get('referencingElement');
@@ -68,14 +68,14 @@ const resolveOpenAPI31Strategy = async options => {
68
68
  const fragmentElement = jsonPointerEvaluate(jsonPointer, openApiElement);
69
69
 
70
70
  // prepare reference set for dereferencing
71
- const openApiElementReference = Reference({
71
+ const openApiElementReference = new Reference({
72
72
  uri: baseURI,
73
73
  value: openApiParseResultElement
74
74
  });
75
- const refSet = ReferenceSet({
75
+ const refSet = new ReferenceSet({
76
76
  refs: [openApiElementReference]
77
77
  });
78
- if (jsonPointer !== '') refSet.rootRef = null; // reset root reference as we want fragment to become the root reference
78
+ if (jsonPointer !== '') refSet.rootRef = undefined; // reset root reference as we want fragment to become the root reference
79
79
 
80
80
  // prepare ancestors; needed for cases where fragment is not OpenAPI element
81
81
  const ancestors = [new Set([fragmentElement])];
@@ -89,7 +89,7 @@ const resolveOpenAPI31Strategy = async options => {
89
89
  * then below baseURI check will make sure that constant HTTPS URL is used as baseURI.
90
90
  */
91
91
  baseURI: `${baseURI}${jsonPointerURI}`,
92
- resolvers: [HttpResolverSwaggerClient({
92
+ resolvers: [new HTTPResolverSwaggerClient({
93
93
  timeout: timeout || 10000,
94
94
  redirects: redirects || 10
95
95
  })],
@@ -99,30 +99,30 @@ const resolveOpenAPI31Strategy = async options => {
99
99
  responseInterceptor
100
100
  }
101
101
  },
102
- strategies: [OpenApi3_1ResolveStrategy()]
102
+ strategies: [new OpenAPI3_1ResolveStrategy()]
103
103
  },
104
104
  parse: {
105
105
  mediaType: mediaTypes.latest(),
106
- parsers: [OpenApiJson3_1Parser({
106
+ parsers: [new OpenAPIJSON3_1Parser({
107
107
  allowEmpty: false,
108
108
  sourceMap: false
109
- }), OpenApiYaml3_1Parser({
109
+ }), new OpenAPIYAML3_1Parser({
110
110
  allowEmpty: false,
111
111
  sourceMap: false
112
- }), JsonParser({
112
+ }), new JSONParser({
113
113
  allowEmpty: false,
114
114
  sourceMap: false
115
- }), YamlParser({
115
+ }), new YAMLParser({
116
116
  allowEmpty: false,
117
117
  sourceMap: false
118
- }), BinaryParser({
118
+ }), new BinaryParser({
119
119
  allowEmpty: false,
120
120
  sourceMap: false
121
121
  })]
122
122
  },
123
123
  dereference: {
124
124
  maxDepth: 100,
125
- strategies: [OpenApi3_1SwaggerClientDereferenceStrategy({
125
+ strategies: [new OpenAPI3_1SwaggerClientDereferenceStrategy({
126
126
  allowMetaPatches,
127
127
  useCircularStructures,
128
128
  parameterMacro,
package/lib/index.js CHANGED
@@ -52,7 +52,7 @@ Swagger.getBaseUrl = _index9.baseUrl;
52
52
  Swagger.apidom = {
53
53
  resolve: {
54
54
  resolvers: {
55
- HttpResolverSwaggerClient: _index11.default
55
+ HTTPResolverSwaggerClient: _index11.default
56
56
  }
57
57
  },
58
58
  parse: {
@@ -8,137 +8,99 @@ var _apidomCore = require("@swagger-api/apidom-core");
8
8
  var _empty = require("@swagger-api/apidom-reference/configuration/empty");
9
9
  var _openapi = _interopRequireDefault(require("@swagger-api/apidom-reference/dereference/strategies/openapi-3-1"));
10
10
  var _apidomNsOpenapi = _interopRequireWildcard(require("@swagger-api/apidom-ns-openapi-3-1"));
11
- var _dereference = _interopRequireDefault(require("./visitors/dereference.js"));
12
- var _parameters = _interopRequireDefault(require("./visitors/parameters.js"));
13
- var _properties = _interopRequireDefault(require("./visitors/properties.js"));
14
- var _allOf = _interopRequireDefault(require("./visitors/all-of.js"));
11
+ var _root = _interopRequireDefault(require("./visitors/root.js"));
15
12
  /* eslint-disable camelcase */
16
13
 
17
14
  const visitAsync = _apidomCore.visit[Symbol.for('nodejs.util.promisify.custom')];
18
- const mergeAllVisitorsAsync = _apidomCore.mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
19
- const OpenApi3_1SwaggerClientDereferenceStrategy = _openapi.default.compose({
20
- props: {
21
- allowMetaPatches: false,
22
- parameterMacro: null,
23
- modelPropertyMacro: null,
24
- mode: 'non-strict',
25
- ancestors: null
26
- },
27
- init({
28
- allowMetaPatches = this.allowMetaPatches,
29
- parameterMacro = this.parameterMacro,
30
- modelPropertyMacro = this.modelPropertyMacro,
31
- mode = this.mode,
32
- ancestors = []
15
+ class OpenAPI3_1SwaggerClientDereferenceStrategy extends _openapi.default {
16
+ allowMetaPatches;
17
+ parameterMacro;
18
+ modelPropertyMacro;
19
+ mode;
20
+ ancestors;
21
+ constructor({
22
+ allowMetaPatches = false,
23
+ parameterMacro = null,
24
+ modelPropertyMacro = null,
25
+ mode = 'non-strict',
26
+ ancestors = [],
27
+ ...rest
33
28
  } = {}) {
29
+ super({
30
+ ...rest
31
+ });
34
32
  this.name = 'openapi-3-1-swagger-client';
35
33
  this.allowMetaPatches = allowMetaPatches;
36
34
  this.parameterMacro = parameterMacro;
37
35
  this.modelPropertyMacro = modelPropertyMacro;
38
36
  this.mode = mode;
39
37
  this.ancestors = [...ancestors];
40
- },
41
- methods: {
42
- async dereference(file, options) {
43
- var _options$dereference$;
44
- const visitors = [];
45
- const namespace = (0, _apidomCore.createNamespace)(_apidomNsOpenapi.default);
46
- const immutableRefSet = (_options$dereference$ = options.dereference.refSet) != null ? _options$dereference$ : (0, _empty.ReferenceSet)();
47
- const mutableRefsSet = (0, _empty.ReferenceSet)();
48
- let refSet = immutableRefSet;
49
- let reference;
50
- if (!immutableRefSet.has(file.uri)) {
51
- reference = (0, _empty.Reference)({
52
- uri: file.uri,
53
- value: file.parseResult
54
- });
55
- immutableRefSet.add(reference);
56
- } else {
57
- // pre-computed refSet was provided as configuration option
58
- reference = immutableRefSet.find(ref => ref.uri === file.uri);
59
- }
60
-
61
- /**
62
- * Clone refSet due the dereferencing process being mutable.
63
- * We don't want to mutate the original refSet and the references.
64
- */
65
- if (options.dereference.immutable) {
66
- immutableRefSet.refs.map(ref => (0, _empty.Reference)({
67
- ...ref,
68
- value: (0, _apidomCore.cloneDeep)(ref.value)
69
- })).forEach(ref => mutableRefsSet.add(ref));
70
- reference = mutableRefsSet.find(ref => ref.uri === file.uri);
71
- refSet = mutableRefsSet;
72
- }
73
-
74
- // create main dereference visitor
75
- const dereferenceVisitor = (0, _dereference.default)({
76
- reference,
77
- namespace,
78
- options,
79
- allowMetaPatches: this.allowMetaPatches,
80
- ancestors: this.ancestors
38
+ }
39
+ async dereference(file, options) {
40
+ var _options$dereference$;
41
+ const namespace = (0, _apidomCore.createNamespace)(_apidomNsOpenapi.default);
42
+ const immutableRefSet = (_options$dereference$ = options.dereference.refSet) != null ? _options$dereference$ : new _empty.ReferenceSet();
43
+ const mutableRefsSet = new _empty.ReferenceSet();
44
+ let refSet = immutableRefSet;
45
+ let reference;
46
+ if (!immutableRefSet.has(file.uri)) {
47
+ reference = new _empty.Reference({
48
+ uri: file.uri,
49
+ value: file.parseResult
81
50
  });
82
- visitors.push(dereferenceVisitor);
83
-
84
- // create parameter macro visitor (if necessary)
85
- if (typeof this.parameterMacro === 'function') {
86
- const parameterMacroVisitor = (0, _parameters.default)({
87
- parameterMacro: this.parameterMacro,
88
- options
89
- });
90
- visitors.push(parameterMacroVisitor);
91
- }
92
-
93
- // create model property macro visitor (if necessary)
94
- if (typeof this.modelPropertyMacro === 'function') {
95
- const modelPropertyMacroVisitor = (0, _properties.default)({
96
- modelPropertyMacro: this.modelPropertyMacro,
97
- options
98
- });
99
- visitors.push(modelPropertyMacroVisitor);
100
- }
101
-
102
- // create allOf visitor (if necessary)
103
- if (this.mode !== 'strict') {
104
- const allOfVisitor = (0, _allOf.default)({
105
- options
106
- });
107
- visitors.push(allOfVisitor);
108
- }
51
+ immutableRefSet.add(reference);
52
+ } else {
53
+ // pre-computed refSet was provided as configuration option
54
+ reference = immutableRefSet.find(ref => ref.uri === file.uri);
55
+ }
109
56
 
110
- // establish root visitor by visitor merging
111
- const rootVisitor = mergeAllVisitorsAsync(visitors, {
112
- nodeTypeGetter: _apidomNsOpenapi.getNodeType
113
- });
114
- const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
115
- keyMap: _apidomNsOpenapi.keyMap,
116
- nodeTypeGetter: _apidomNsOpenapi.getNodeType
117
- });
57
+ /**
58
+ * Clone refSet due the dereferencing process being mutable.
59
+ * We don't want to mutate the original refSet and the references.
60
+ */
61
+ if (options.dereference.immutable) {
62
+ immutableRefSet.refs.map(ref => new _empty.Reference({
63
+ ...ref,
64
+ value: (0, _apidomCore.cloneDeep)(ref.value)
65
+ })).forEach(ref => mutableRefsSet.add(ref));
66
+ reference = mutableRefsSet.find(ref => ref.uri === file.uri);
67
+ refSet = mutableRefsSet;
68
+ }
69
+ const rootVisitor = new _root.default({
70
+ reference,
71
+ namespace,
72
+ options,
73
+ allowMetaPatches: this.allowMetaPatches,
74
+ ancestors: this.ancestors,
75
+ modelPropertyMacro: this.modelPropertyMacro,
76
+ mode: this.mode,
77
+ parameterMacro: this.parameterMacro
78
+ });
79
+ const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
80
+ keyMap: _apidomNsOpenapi.keyMap,
81
+ nodeTypeGetter: _apidomNsOpenapi.getNodeType
82
+ });
118
83
 
119
- /**
120
- * If immutable option is set, replay refs from the refSet.
121
- */
122
- if (options.dereference.immutable) {
123
- mutableRefsSet.refs.filter(ref => ref.uri.startsWith('immutable://')).map(ref => (0, _empty.Reference)({
124
- ...ref,
125
- uri: ref.uri.replace(/^immutable:\/\//, '')
126
- })).forEach(ref => immutableRefSet.add(ref));
127
- reference = immutableRefSet.find(ref => ref.uri === file.uri);
128
- refSet = immutableRefSet;
129
- }
84
+ /**
85
+ * If immutable option is set, replay refs from the refSet.
86
+ */
87
+ if (options.dereference.immutable) {
88
+ mutableRefsSet.refs.filter(ref => ref.uri.startsWith('immutable://')).map(ref => new _empty.Reference({
89
+ ...ref,
90
+ uri: ref.uri.replace(/^immutable:\/\//, '')
91
+ })).forEach(ref => immutableRefSet.add(ref));
92
+ }
130
93
 
131
- /**
132
- * Release all memory if this refSet was not provided as an configuration option.
133
- * If provided as configuration option, then provider is responsible for cleanup.
134
- */
135
- if (options.dereference.refSet === null) {
136
- immutableRefSet.clean();
137
- }
138
- mutableRefsSet.clean();
139
- return dereferencedElement;
94
+ /**
95
+ * Release all memory if this refSet was not provided as an configuration option.
96
+ * If provided as configuration option, then provider is responsible for cleanup.
97
+ */
98
+ if (options.dereference.refSet === null) {
99
+ immutableRefSet.clean();
140
100
  }
101
+ mutableRefsSet.clean();
102
+ return dereferencedElement;
141
103
  }
142
- });
143
- var _default = exports.default = OpenApi3_1SwaggerClientDereferenceStrategy;
104
+ }
105
+ var _default = exports.default = OpenAPI3_1SwaggerClientDereferenceStrategy;
144
106
  /* eslint-enable camelcase */
@@ -5,86 +5,83 @@ exports.__esModule = true;
5
5
  exports.default = void 0;
6
6
  var _apidomCore = require("@swagger-api/apidom-core");
7
7
  var _apidomNsOpenapi = require("@swagger-api/apidom-ns-openapi-3-1");
8
- var _compose = _interopRequireDefault(require("../utils/compose.js"));
9
8
  var _toPath = _interopRequireDefault(require("../utils/to-path.js"));
10
- const AllOfVisitor = (0, _compose.default)({
11
- init({
12
- options
13
- }) {
14
- this.options = options;
15
- },
16
- props: {
17
- options: null,
18
- SchemaElement: {
19
- leave(schemaElement, key, parent, path, ancestors) {
20
- // do nothing
21
- if (typeof schemaElement.allOf === 'undefined') return undefined;
9
+ class AllOfVisitor {
10
+ options;
11
+ SchemaElement = {
12
+ leave(schemaElement, key, parent, path, ancestors) {
13
+ // do nothing
14
+ if (typeof schemaElement.allOf === 'undefined') return undefined;
22
15
 
23
- // collect error and return if allOf keyword is not an array
24
- if (!(0, _apidomCore.isArrayElement)(schemaElement.allOf)) {
25
- var _this$options$derefer;
26
- const error = new TypeError('allOf must be an array');
27
- error.fullPath = [...(0, _toPath.default)([...ancestors, parent, schemaElement]), 'allOf'];
28
- (_this$options$derefer = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer = _this$options$derefer.errors) == null || _this$options$derefer.push == null || _this$options$derefer.push(error);
29
- return undefined;
30
- }
16
+ // collect error and return if allOf keyword is not an array
17
+ if (!(0, _apidomCore.isArrayElement)(schemaElement.allOf)) {
18
+ var _this$options$derefer;
19
+ const error = new TypeError('allOf must be an array');
20
+ error.fullPath = [...(0, _toPath.default)([...ancestors, parent, schemaElement]), 'allOf'];
21
+ (_this$options$derefer = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer = _this$options$derefer.errors) == null || _this$options$derefer.push == null || _this$options$derefer.push(error);
22
+ return undefined;
23
+ }
31
24
 
32
- // remove allOf keyword if empty
33
- if (schemaElement.allOf.isEmpty) {
34
- schemaElement.remove('allOf');
35
- return undefined;
36
- }
25
+ // remove allOf keyword if empty
26
+ if (schemaElement.allOf.isEmpty) {
27
+ schemaElement.remove('allOf');
28
+ return undefined;
29
+ }
37
30
 
38
- // collect errors if allOf keyword contains anything else than Schema Object
39
- const includesSchemaElementOnly = schemaElement.allOf.content.every(_apidomNsOpenapi.isSchemaElement);
40
- if (!includesSchemaElementOnly) {
41
- var _this$options$derefer2;
42
- const error = new TypeError('Elements in allOf must be objects');
43
- error.fullPath = [...(0, _toPath.default)([...ancestors, parent, schemaElement]), 'allOf'];
44
- (_this$options$derefer2 = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer2 = _this$options$derefer2.errors) == null || _this$options$derefer2.push == null || _this$options$derefer2.push(error);
45
- return undefined;
46
- }
47
- while (schemaElement.hasKey('allOf')) {
48
- const {
49
- allOf
50
- } = schemaElement;
51
- schemaElement.remove('allOf');
52
- const allOfMerged = _apidomCore.deepmerge.all([...allOf.content, schemaElement]);
31
+ // collect errors if allOf keyword contains anything else than Schema Object
32
+ const includesSchemaElementOnly = schemaElement.allOf.content.every(_apidomNsOpenapi.isSchemaElement);
33
+ if (!includesSchemaElementOnly) {
34
+ var _this$options$derefer2;
35
+ const error = new TypeError('Elements in allOf must be objects');
36
+ error.fullPath = [...(0, _toPath.default)([...ancestors, parent, schemaElement]), 'allOf'];
37
+ (_this$options$derefer2 = this.options.dereference.dereferenceOpts) == null || (_this$options$derefer2 = _this$options$derefer2.errors) == null || _this$options$derefer2.push == null || _this$options$derefer2.push(error);
38
+ return undefined;
39
+ }
40
+ while (schemaElement.hasKey('allOf')) {
41
+ const {
42
+ allOf
43
+ } = schemaElement;
44
+ schemaElement.remove('allOf');
45
+ const allOfMerged = _apidomCore.deepmerge.all([...allOf.content, schemaElement]);
53
46
 
54
- /**
55
- * If there was not an original $$ref value, make sure to remove
56
- * any $$ref value that may exist from the result of `allOf` merges.
57
- */
58
- if (!schemaElement.hasKey('$$ref')) {
59
- allOfMerged.remove('$$ref');
60
- }
47
+ /**
48
+ * If there was not an original $$ref value, make sure to remove
49
+ * any $$ref value that may exist from the result of `allOf` merges.
50
+ */
51
+ if (!schemaElement.hasKey('$$ref')) {
52
+ allOfMerged.remove('$$ref');
53
+ }
61
54
 
62
- /**
63
- * If there was an example keyword in the original schema,
64
- * keep it instead of merging with example from other schema.
65
- */
66
- if (schemaElement.hasKey('example')) {
67
- const member = allOfMerged.getMember('example');
68
- if (member) {
69
- member.value = schemaElement.get('example');
70
- }
55
+ /**
56
+ * If there was an example keyword in the original schema,
57
+ * keep it instead of merging with example from other schema.
58
+ */
59
+ if (schemaElement.hasKey('example')) {
60
+ const member = allOfMerged.getMember('example');
61
+ if (member) {
62
+ member.value = schemaElement.get('example');
71
63
  }
64
+ }
72
65
 
73
- /**
74
- * If there was an examples keyword in the original schema,
75
- * keep it instead of merging with examples from other schema.
76
- */
77
- if (schemaElement.hasKey('examples')) {
78
- const member = allOfMerged.getMember('examples');
79
- if (member) {
80
- member.value = schemaElement.get('examples');
81
- }
66
+ /**
67
+ * If there was an examples keyword in the original schema,
68
+ * keep it instead of merging with examples from other schema.
69
+ */
70
+ if (schemaElement.hasKey('examples')) {
71
+ const member = allOfMerged.getMember('examples');
72
+ if (member) {
73
+ member.value = schemaElement.get('examples');
82
74
  }
83
- schemaElement.content = allOfMerged.content;
84
75
  }
85
- return undefined;
76
+ schemaElement.content = allOfMerged.content;
86
77
  }
78
+ return undefined;
87
79
  }
80
+ };
81
+ constructor({
82
+ options
83
+ }) {
84
+ this.options = options;
88
85
  }
89
- });
86
+ }
90
87
  var _default = exports.default = AllOfVisitor;