swagger-client
Version:
SwaggerJS - a collection of interfaces for OAI specs
45 lines (44 loc) • 1.32 kB
JavaScript
import { mergeAllVisitors } from '@swagger-api/apidom-core';
import { getNodeType } from '@swagger-api/apidom-ns-openapi-3-2';
import ModelPropertyMacroVisitor from './properties.js';
import AllOfVisitor from './all-of.js';
import ParameterMacroVisitor from './parameters.js';
import OpenAPI3_2SwaggerClientDereferenceVisitor from './dereference.js'; // eslint-disable-line camelcase
const mergeAllVisitorsAsync = mergeAllVisitors[Symbol.for('nodejs.util.promisify.custom')];
class RootVisitor {
constructor({
parameterMacro,
modelPropertyMacro,
mode,
options,
...rest
}) {
const visitors = [];
visitors.push(new OpenAPI3_2SwaggerClientDereferenceVisitor({
...rest,
options
}));
if (typeof modelPropertyMacro === 'function') {
visitors.push(new ModelPropertyMacroVisitor({
modelPropertyMacro,
options
}));
}
if (mode !== 'strict') {
visitors.push(new AllOfVisitor({
options
}));
}
if (typeof parameterMacro === 'function') {
visitors.push(new ParameterMacroVisitor({
parameterMacro,
options
}));
}
const mergedVisitor = mergeAllVisitorsAsync(visitors, {
nodeTypeGetter: getNodeType
});
Object.assign(this, mergedVisitor);
}
}
export default RootVisitor;