source: node_modules/swagger-client/lib/resolver/apidom/reference/dereference/strategies/openapi-3-1-swagger-client/index.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 4.4 KB
Line 
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
4var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
5exports.__esModule = true;
6exports.default = void 0;
7var _apidomCore = require("@swagger-api/apidom-core");
8var _empty = require("@swagger-api/apidom-reference/configuration/empty");
9var _openapi = _interopRequireDefault(require("@swagger-api/apidom-reference/dereference/strategies/openapi-3-1"));
10var _apidomNsOpenapi = _interopRequireWildcard(require("@swagger-api/apidom-ns-openapi-3-1"));
11var _dereference = _interopRequireDefault(require("./visitors/dereference.js"));
12var _parameters = _interopRequireDefault(require("./visitors/parameters.js"));
13var _properties = _interopRequireDefault(require("./visitors/properties.js"));
14var _allOf = _interopRequireDefault(require("./visitors/all-of.js"));
15/* eslint-disable camelcase */
16
17const visitAsync = _apidomCore.visit[Symbol.for('nodejs.util.promisify.custom')];
18const OpenApi3_1SwaggerClientDereferenceStrategy = _openapi.default.compose({
19 props: {
20 useCircularStructures: true,
21 allowMetaPatches: false,
22 parameterMacro: null,
23 modelPropertyMacro: null,
24 mode: 'non-strict',
25 ancestors: null
26 },
27 init({
28 useCircularStructures = this.useCircularStructures,
29 allowMetaPatches = this.allowMetaPatches,
30 parameterMacro = this.parameterMacro,
31 modelPropertyMacro = this.modelPropertyMacro,
32 mode = this.mode,
33 ancestors = []
34 } = {}) {
35 this.name = 'openapi-3-1-swagger-client';
36 this.useCircularStructures = useCircularStructures;
37 this.allowMetaPatches = allowMetaPatches;
38 this.parameterMacro = parameterMacro;
39 this.modelPropertyMacro = modelPropertyMacro;
40 this.mode = mode;
41 this.ancestors = [...ancestors];
42 },
43 methods: {
44 async dereference(file, options) {
45 var _options$dereference$;
46 const visitors = [];
47 const namespace = (0, _apidomCore.createNamespace)(_apidomNsOpenapi.default);
48 const refSet = (_options$dereference$ = options.dereference.refSet) != null ? _options$dereference$ : (0, _empty.ReferenceSet)();
49 let reference;
50 if (!refSet.has(file.uri)) {
51 reference = (0, _empty.Reference)({
52 uri: file.uri,
53 value: file.parseResult
54 });
55 refSet.add(reference);
56 } else {
57 // pre-computed refSet was provided as configuration option
58 reference = refSet.find(ref => ref.uri === file.uri);
59 }
60
61 // create main dereference visitor
62 const dereferenceVisitor = (0, _dereference.default)({
63 reference,
64 namespace,
65 options,
66 useCircularStructures: this.useCircularStructures,
67 allowMetaPatches: this.allowMetaPatches,
68 ancestors: this.ancestors
69 });
70 visitors.push(dereferenceVisitor);
71
72 // create parameter macro visitor (if necessary)
73 if (typeof this.parameterMacro === 'function') {
74 const parameterMacroVisitor = (0, _parameters.default)({
75 parameterMacro: this.parameterMacro,
76 options
77 });
78 visitors.push(parameterMacroVisitor);
79 }
80
81 // create model property macro visitor (if necessary)
82 if (typeof this.modelPropertyMacro === 'function') {
83 const modelPropertyMacroVisitor = (0, _properties.default)({
84 modelPropertyMacro: this.modelPropertyMacro,
85 options
86 });
87 visitors.push(modelPropertyMacroVisitor);
88 }
89
90 // create allOf visitor (if necessary)
91 if (this.mode !== 'strict') {
92 const allOfVisitor = (0, _allOf.default)({
93 options
94 });
95 visitors.push(allOfVisitor);
96 }
97
98 // establish root visitor by visitor merging
99 const rootVisitor = (0, _apidomCore.mergeAllVisitors)(visitors, {
100 nodeTypeGetter: _apidomNsOpenapi.getNodeType
101 });
102 const dereferencedElement = await visitAsync(refSet.rootRef.value, rootVisitor, {
103 keyMap: _apidomNsOpenapi.keyMap,
104 nodeTypeGetter: _apidomNsOpenapi.getNodeType
105 });
106
107 /**
108 * Release all memory if this refSet was not provided as a configuration option.
109 * If provided as configuration option, then provider is responsible for cleanup.
110 */
111 if (options.dereference.refSet === null) {
112 refSet.clean();
113 }
114 return dereferencedElement;
115 }
116 }
117});
118var _default = exports.default = OpenApi3_1SwaggerClientDereferenceStrategy;
119/* eslint-enable camelcase */
Note: See TracBrowser for help on using the repository browser.